QT5入门之15 - qr函数

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”));

有些东西了解就行了,太过深入需要很多时间。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值