相关文章推荐
着急的大象  ·  js使用for ...·  1 年前    · 
高大的红薯  ·  异常:javax.net.ssl.SSLEx ...·  1 年前    · 
想出国的大象  ·  java - JMX SSL ...·  1 年前    · 

函数 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 去考虑字符集不同的问题,这个问题对于程序员来说就是透明的了。       接下来是为什么有些 字符串 前会有&amp;符号。 比如说像下面这样的: 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标准 右值的概念,如非引用返回 一般情况下,控件上的“&”字符不会直接在控件上显示,因为&有特殊作用:它会转义后面跟的字符,被用来定义快捷键,; 有时会有情况是需要在控件上显示“&”字符,方法是写两个“&”(这样”&&”),就可以显示出一个来。