Qt中的tr()

定义

tr()方法是Qt中QObject的一个static public成员方法,其完整的定义及说明如图-1所示。

图-1

由于是public的,所以Qt下的所有类中都会从QObject继承到一个tr()方法。

 

作用

翻译Qt文档中的描述: 

返回一个转换过了的sourceText的版本,可选的选项有一个disambiguation字符串和参数n的值;否则,如果没有合适的转化后的字符串可用,就返回sourceText它自己。

举例

 貌似tr()这个方法与编码,中文显示什么的有关,先看一个例子

#include <QtGui/QApplication>
#include <QtGui/QPushButton>
int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	QPushButton p("你好");
	p.setVisible(true);
	return a.exec();
}

效果如图-2所示:

图-2

由此可以看出,如果对中文字符串没有用tr()处理,则不能正常显示。

加上tr()之后呢?

#include <QtGui/QApplication>
#include <QtGui/QPushButton>
int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	QPushButton p(QPushButton::tr("你好"));
	p.setVisible(true);
	return a.exec();
}

效果如图-3所示:

图-3

好像也没有正常显示啊。

 

 

一篇精彩的博文:[转自:http://blog.csdn.net/mfc11/article/details/6591134]

 

 

在论坛中漂,经常遇到有人遇到tr相关的问题。用tr的有两类人:

  • (1)因为发现中文老出问题,然后搜索,发现很多人用tr,于是他也开始用tr
  • (2)另一类人,确实是出于国际化的需要,将需要在界面上显示的文件都用tr包起来,这有分两种:
    • (2a) 用tr包住英文(最最推荐的用法,源码英文,然后提供英文到其他语言的翻译包)
    • (2b) 用tr包住中文(源码用中文,然后提供中文到其他语言的翻译包)

注意哦,如果你正在用tr包裹中文字符,却不属于(2b),那么,这是个信号:

  • 你在误用tr
  • 你需要的是QString,而不是tr

如果你确实属于(2b),请做好心理准备,你可能还会遇到很多困难,请考虑Qt国际化(源码含中文时)的点滴分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值