函数
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 plain
copy to clipboard
print
?
#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
根据我查到的信息,这两种写法都是 lambda 表达式的一种,它们可以用来创建匿名
函数
对象,用于传递给 connect 的槽参数。你想知道 lambda 表达式
中
[] 和 () 是什么意思吗?你想知道 lambda 表达式后面还有什么符号吗?希望这能帮助你理解 lambda 表达式
中
[] 和 () 的意思。希望这能帮助你理解 lambda 表达式的完整语法。你想知道 connect
中
和。-> 返回类型 {
函数
体 }
首先来说说
tr
的用处,因为
qt
是一个跨平台开发的工具,因此需要考虑在不同环境下的运行。然而在不同环境下的运行,字符集也会不同,因此
qt
给出的解决方案是 使用
tr
将
字符串
包起来,然后就可以由
qt
去考虑字符集不同的问题,这个问题对于程序员来说就是透明的了。 接下来是为什么有些
字符串
前会有&符号。 比如说像下面这样的: openAction = new QAction(...
Qt
4.8.7是
Qt
4的终结版本,是
Qt
4系列版本
中
最稳定最经典的(很多嵌入式板子还是用
Qt
4.8),其实该版本是和
Qt
5.5差不多时间发布的。参考链接 https://www.
qt
.io/blog/2015/05/26/
qt
-4-8-7-released
https://blog.
qt
.io/blog/2015/07/01/
qt
-5-5-released/
Qt
4.8.7是
Qt
4的终结版本,是
Qt
4系列版本
中
最稳定最经典的(很多嵌入式板子还是用
Qt
4.8),其实该版本是和
Qt
5.5差不多时间发布的。参考链接 https://www.
qt
.io/blog/2015/05/26/
qt
-4-8-7-released https://blog.
qt
.io/blog/2015/07/01/
qt
-5-5-released/
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
用lupdate 操作pro 将要翻译的提取到ts文件 命令是 lupdate my.pro ,要想获取更多有用信息则输入lupdate -verbose bl3000.pro
用 linguist 打开刚才的ts文件,linugist是在
qt
的bin的目录里面, 是一个
rollTech公司目前开发两种产品:
Qt
:跨平台的图形界面设计平台
Qt
opia:嵌入式系统的应用程序开发平台GUI, 是 Graphical User Interface 的缩写QWidget的英文翻译为:子类化 ,部件
c++
中
引入了右值引用和移动语义,可以避免无谓的复制,提高程序性能。有点难理解,于是花时间整理一下自己的理解。
左值、右值
C++
中
所有的值都必然属于左值、右值二者之一。左值是指表达式结束后依然存在的持久化对象,右值是指表达式结束时就不再存在的临时对象。所有的具名变量或者对象都是左值,而右值不具名。很难得到左值和右值的真正定义,但是有一个可以区分左值和右值的便捷方法:看能不能对表达式取地址,如果能,则为左值,否则为右值。
看见书上又将右值分为将亡值和纯右值。纯右值就是c++98标准
中
右值的概念,如非引用返回
一般情况下,控件上的“&”字符不会直接在控件上显示,因为&有特殊作用:它会转义后面跟的字符,被用来定义快捷键,;
有时会有情况是需要在控件上显示“&”字符,方法是写两个“&”(这样”&&”),就可以显示出一个来。