Qt开发(四):中文显示和国际化

发布于 2022-08-16 02:51:43 字数 3925 浏览 8 评论 3

http://xizhizhu.blogspot.com/2008/11/qt_09.html

Qt使用Unicode编码,自然也就支持中文了。显示中文最简单的方法是:
#include <QApplication>
#include
<QFont>
#include
<QLabel>
#include
<QString>

int main(int argc, char *argv[])

{

  QApplication app(argc, argv);

  QLabel label(QString::fromLocal8Bit("你好"));

  label.setFont(QFont("AR PL KaitiM GB", 18, QFont::Bold));

  label.show();

  return app.exec();

}

要正确显示中文,必须做到两点:一是编码方式,二是字体。在这段代码中,编码方式通过QString的静态函数fromLocal8Bit指定,字体通过QWidget(QLabel从QWidge继承而来)的函数setFont指定。

此外,还可用其他一些方式指定编码方式。例如:
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));

QLabel label(QObject::tr("你好"));

现在看看如何做到多语言支持。下面的例子展示了如何根据系统Locale加载相应语言。

首先,将源代码修改如下:
#include <QApplication>

#include <QFont>

#include <QLabel>

#include <QObject>

#include <QLocale>

#include <QTranslator>


int main(int argc, char *argv[])

{

QApplication app(argc, argv);

// 加载翻译器
QTranslator trans;

trans.load("test_" + QLocale::system().name(), app.applicationDirPath());
app.installTranslator(&trans);


QLabel label(QObject::tr("Hello, Qt!"));

label.setFont(QFont("AR PL KaitiM GB", 18, QFont::Bold));
label.show();

return app.exec();

}

这里,所有需要多语言支持的文本都需要用函数QObject::tr包裹。

然后创建test.qrc文件:
<!DOCTYPE RCC>
<RCC version="1.0">

<qresource>

   <file>test_en.qm</file>

   <file>test_zh.qm</file>

</qresource>

</RCC>

然后重新使用命令qmake -project创建.pro文件test.pro,并添加:
TRANSLATIONS=test_en.ts test_zh.ts

然后使用lupdate test.pro命令创建这两个ts文件,并使用Qt提供的linguist工具进行翻译,再使用lrelease test.pro命令根据翻译创建两个qm文件。

这时,使用命令qmake创建Makefile,并编译即可。现在的程序已经能够根据系统的本地Locale(英文或中文)选择相应语言了。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

无人问我粥可暖 2022-08-18 14:28:31

好东东·~~~~

放血 2022-08-18 08:42:29

居里长安 2022-08-17 06:41:35

顶,回头有时间试试!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文