第一次使用QT 在使用下面的函数时
1 void MainWindow::on_actionHehe_triggered() 2 { 3 QMessageBox::information(this,tr("Tips"),tr("Design Time : 2016-07-26"),QMessageBox::Yes);//tr("Tips") 4 } 5 有这样的疑惑 tr这个函数是干嘛的 6 查看函数原型,是这样的 7 static int information(QWidget *parent, const QString &title, 8 const QString& text, 9 const QString& button0Text, 10 const QString& button1Text = QString(), 11 const QString& button2Text = QString(), 12 int defaultButtonNumber = 0, 13 int escapeButtonNumber = -1); 14 这两个参数只是一个QString的类 ,并且试过把tr去掉,函数变成这样 15 16 void MainWindow::on_actionHehe_triggered() 17 { 18 QMessageBox::information(this,"Tips","Design Time : 2016-07-26",QMessageBox::Yes);//tr("Tips") 19 } 20 效果是一样的 21 通过查网上的资料发现 22 是出于国际化的需要,将需要在界面上显示的文件都用tr包起来,这有分两种: 23 (2a) 用tr包住英文(最最推荐的用法,源码英文,然后提供英文到其他语言的翻译包) 24 (2b) 用tr包住中文(源码用中文,然后提供中文到其他语言的翻译包) 25 26 tr 是做什么的?下面二者的区别是什么? 27 28 QString text1 = QObject::tr("hello"); QString text2 = QString("hello"); 29 tr是用来实现国际化,如果你为这个程序提供了中文翻译包(其中hello被翻译成中文"你好"),那么text1的内容将是中文"你好";如果你为程序提供且使用日文翻译包,那么text1的内容将是日文。 30 31 tr是经过多级函数调用才实现了翻译操作,是有代价的,所以不该用的时候最好不要用。