Qt开发(四):中文显示和国际化
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
好东东·~~~~
顶,回头有时间试试!