QT中的tr()函数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

在Qt中使用字符串时,经常看到有人会使用QObject::tr(),其实很多人都在乱用tr()函数,那么今天就来教大家如何正确的使用tr();


1.关于tr()

tr()是QT的基类QObject 的方法,所有QObject的子类都可以继承该方法。

2.如何正确使用tr

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

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

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

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

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

tr 是做什么的?下面二者的区别是什么?

QString text1 = QObject::tr("hello");
QString text2 = QString("hello");

tr是用来实现国际化,如果你为这个程序提供了中文翻译包(其中hello被翻译成中文"你好"),那么text1的内容将是中文"你好";
如果你为程序提供且使用日文翻译包,那么text1的内容将是“こんにちは”。

tr是经过多级函数调用才实现了翻译操作,是有代价的,所以不该用的时候最好不要用。

总结

如果没有国际化需求的情况下是没必要去使用tr的,直接使用QString省去了多级函数的调用,提高效率它不香吗(●’◡’●);

参考文章来源https://www.cnblogs.com/lsgxeva/p/7814072.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值