Qt国际化详细介绍
2016-03-09 16:41
393 查看
Qt 国际化
参与过qt项目,对qt国际化得了解并不深入,只知道使用tr即可达到翻译的效果,但不曾细究其中的用法。这次在代码中看到了QT_TR_NOOP,于是搜索了下,特此将学习到的总结下:
用法
之前使用qt翻译用到tr,但是有些类并未继承自QObject,没有tr函数,在这种情况下如何使用呢?今天,看到一个csdn的博客,写得很详细:参考如下:
/article/10120863.html
我自己也总结了下:
类继承自QObject:
直接使用tr:
QPushButton *button = new QPushButton(this); button->setText(tr("国际化"));
类不继承自QObject:
使用QObject::tr:QPushButton *button = new QPushButton(this); button->setText(QObject::tr("国际化"));
在类声明中添加 Q_DECLARE_TR_FUNCTIONS,此类即可使用tr:
class MyClass { Q_DECLARE_TR_FUNCTIONS(MyClass) public: MyClass(); QString m_str; ... }; MyClass::MyClass{ m_str = tr("国际化"); }
补充-tr内部包裹一个变量
一般tr均包裹一个常亮字符串,而如果我们tr内部包裹一个变量,如何通知程序进行翻译呢?于是,这便用到了QT_TR_NOOP() 和 tr()
//.h file class MyTranslation : QObject { MyTranslation(QObject *parent = Q_NULLPTR); } //.cpp MyTranslation(QObject *parent) : QObject(parent) { QT_TR_NOOP("国际化"); ··· } QString myTr(const QString& str) { static MyTranslation myTr; return myTr.tr(str.toUtf8()); } QString test = myTr("国际化");
相关文章推荐
- QUdpSocket收不到回复及分析
- ubuntu技巧--ubuntu Qt Creator debug
- Qt控制台输出QString
- Qt编写串口通信程序 讲解
- 在Ubuntu下安装Qt creator 5
- QT5串口通信
- Ubuntu下 嵌入式Qt开发环境的搭建--转载
- Exposing Qt's Q_ENUMS to QML
- Qt无法输入中文问题解决
- QT中各种MessageBox的使用
- qt
- 学习记录-Qt读取条码扫描枪
- QT-QMainWindow布局设置
- Qt:parent参数
- Qt中ioctl
- QT4.8.6静态编译
- 关于Qt调用多个.m文件形成的函数问题。
- Win7 Qt4.8.5+QtCreator2.8.0+mingw配置过程
- Qt5官方demo解析集21——Extending QML - Adding Types Example
- QT中如何给QTabWidget的整个Tab页添加border边框