Qt中的emit

thulongkang 2012-07-09 09:30:58
看到一段代码,有两个小问题。
问题(1):
signals:
void findNext(const QString &str, Qt::CaseSensitivity cs);
void findPrevious(const QString &str, Qt::CaseSensitivity cs);

private slots:
void findClicked();
void enableFindButton(const QString &text);
(以上是信号以及私有槽的声明,关键问题在下面)
void FindDialog::findClicked()
{
QString text = lineEdit->text();
Qt::CaseSensitivity cs = caseCheckBox->isChecked() ? Qt::CaseInsensitive : Qt::CaseSensitive;
if(backwardCheckBox->isChecked()) {
emit findPrevious(text, cs);
}
else {
emit findNext(text, cs);
}
}
在这段代码中,emit是如何起作用的?


问题(2)
QLabel *label;
label = new QLabel(tr("Find &what:"));

QCheckBox *caseCheckBox;
caseCheckBox = new QCheckBox(tr("Match &case"));
那个tr到底是什么意思啊?

...全文
18566 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
DevilBox 2015-03-26
  • 打赏
  • 举报
回复
在某处有emit SpaceKeyPressed(); 在某处还有connect(InputCMD_LineEdit,SIGNAL(SpaceKeyPressed()),this,SLOT(ShowFuncList())) //< 那么就是向外发出SpaceKeyPressed信号,调用 connect(InputCMD_LineEdit,SIGNAL(SpaceKeyPressed()),this,SLOT(ShowFuncList()));中的ShowFuncList()函数
qq_20975155 2014-09-18
  • 打赏
  • 举报
回复
长 见 识 了啊
快乐出发0220 2014-09-02
  • 打赏
  • 举报
回复
soga...............
Tsinghua 2012-12-21
  • 打赏
  • 举报
回复
学写了 菜鸟 飘过。。。。
thulongkang 2012-07-11
  • 打赏
  • 举报
回复
明白了。
zhu_xz 2012-07-10
  • 打赏
  • 举报
回复 1
emit啥事也不干,是给程序员看的
tomy 2012-07-10
  • 打赏
  • 举报
回复
emit是发出信号 对应的是接收信号

在这之前 应该有QObject::connect(*FindDialog, SIGNAL(), *receiver, SLOT()) 类似的句子

调用emit ..后,对应的SLOT里面的函数就会被调用
yby4769250 2012-07-09
  • 打赏
  • 举报
回复
说白了,就是调用findPrevious或者findNext信号对应的槽函数,emit之前,在某个地方,肯定有connect把信号和槽进行关联,关联了之后,emit某个信号,就相当于调用这个信号connect时所关联的槽函数,就这么简单而已。
tr()是为了支持多语言多种字符编码而实现,可以正确显示中文等非assci编码字符
lvjun1986 2012-07-09
  • 打赏
  • 举报
回复
emit是将信号findNext或信号findPrevious发射出去;
tr是Qt中为了国际化而使用的。

16,235

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧