函数tr()的原型是QObject::tr(),被它处理的字符串可以使用工具提取出来翻译成其他语言,也就是国际化使用。如果想让你的程序实现国际化,那么就在用户所有可见的字符串处都使用QObject::tr()!但是我们在使用的过程中通常是使用tr(),而并非是QObject::tr(),这是为什么呢?原来,tr()函数是定义在QObject里面的,所有使用了Q_OBJECT宏的类都自动具有tr()的函数。和connect函数一样,都是继承了QObject所以能够直接使用。
Qt中在按钮上显示字符'&'
1、通常使用含字符'&'的字符串为按钮的显示名称,如果设置按钮的text为"&Cancel",
即设置text, setText("&Cancel");或创建时QPushButton *pushButton = new QPushButton (QObject::tr("&Cancel"));
Qt的编译器会将字符'&'后的'C'在显示时下方多一下划线,表明'C'为该按钮的快捷键,通过"Alt+c"操作来实现对pushButton的点击。
2、有的时候,我们会有这种需求,想在按钮上或别的控件上以包括字符'&'为显示名如"Cancel&Exit",这样字符串中的'&'需要对其进行转义,
通常我们会想到使用"/"来实现,试过发现不行,后来,直接使用'&'来转义没想到出现了想要的效果。即tr("Cancle&&Exit")。
view plaincopy to clipboardprint?
#include <QApplication>
#include <QtGui>
#include <QObject>
int main (int argc, char *argv[])
{
QApplication app (argc, argv);
QWidget *widget = new QWidget;
QHBoxLayout *mainLayout = new QHBoxLayout;
QString str = QObject::tr("&Cancle&&Exit");
QPushButton *pushButton = new QPushButton (str);
QObject::connect (pushButton, SIGNAL (clicked()), qApp, SLOT (quit ()));
mainLayout->addWidget (pushButton);
widget->setLayout (mainLayout);
widget->show ();
return app.exec ();
}
编译:
$qmake -project
$qmake
$make