QT5入门之15 - qr函数
来源:互联网 发布:淘宝号登不上去 编辑:程序博客网 时间:2024/06/05 08:00
qr是一个函数,是用于实现国际化的。
setWindowTitle(tr("hello"));
如果你为这个程序提供了中文翻译包(其中hello被翻译成中文”你好”),那么标题将是中文”你好”;
如果你为程序提供且使用日文翻译包,那么text1的内容将是日文。
1.tr()函数是定义在QObject宏里面的,所有使用了Q_OBJECT宏的类都自动具有tr()的函数。
(只有加入了Q_OBJECT,你才能使用QT中的signal和slot机制。)
2.Q_OBJECT 宏展开后为生成 tr ,tr调用QCoreApplication的translate函数。而该函数需要指定编码。
QString QMetaObject::tr(const char *s, const char *c) const{return QCoreApplication::translate(d.stringdata, s, c, QCoreApplication::CodecForTr);}
QString QCoreApplication::translate ( const char * context, const char * sourceText, const char * disambiguation, Encoding encoding, int n )
对tr和这个函数,manual中都有比较详尽的解释。我们这儿简单看一下它的这几个参数:
• context 上下文,一般就是需要翻译的字符串所在的类的名字
• sourceText 需要翻译的字符串。(我们关注的编码其实就是它的编码)
• disambiguation 消除歧义用的。(比如我们的类内出现两处”close”,一处含义是关闭,另一处含义是亲密的。显然需要让翻译人员知道这点区别)
• encoding 指定编码。它有两个值
o CodecForTr 使用setCodecForTr()设置的编码来解释 sourceText
o UnicodeUTF8 使用utf8编码来解释 sourceText
o 其实这两个分别对应tr和trUtf8
• n 处理单复数(对中文来说,不存在这个问题)
3.如何告诉tr 汉字在磁盘中保存的是何种编码?
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312")); QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
4.
QString 采用的unicode,在中文支持上不存在任何问题
直接使用’&’来转义.&&
w.setWindowTitle(QObject::tr(“MyApp”));
有些东西了解就行了,太过深入需要很多时间。
- QT5入门之15 - qr函数
- QT5入门之2 - HelloWorld
- QT5入门之8 - 定时器
- QT5入门之9 - 菜单栏
- QT5入门之11 - 工具栏
- QT5入门之14 - QString
- QT5入门之26 -QLabel
- QT5入门之27 -QPushButton
- QT5入门之28 -QLineEdit
- QT5入门之30-控件
- QT5入门之32-QCustomPlot
- QT5入门之32-QCustomPlot
- matlab qr函数 QR分解
- QT5入门之5 - 确认退出对话框
- QT5入门之6 - Qt提示对话框
- QT5入门之7 - 修改程序图标
- QT5入门之13 - 获取当前路径
- QT5入门之16 - 设置按钮提示
- Android怎么让软键盘显示和消失
- 九度OJ 1209:最小邮票数 (遍历)
- JavaScript 通过HTML的FileReader把图片转成base64
- opencv读入图像和avi
- webrc ios 打开h264 硬件编解码
- QT5入门之15 - qr函数
- 端口重定向
- openwrt 常用命令
- Android之Handler详解
- 3.4 Queue via Stacks
- android 如何导出jar包
- 37-java数字猜大小
- Linux下的PCI总线驱动
- LayoutInflater和inflate的用法,有图有真相