首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >QCheckBox::toggled()和QCheckBox::clicked()有什么区别?

QCheckBox::toggled()和QCheckBox::clicked()有什么区别?
EN

Stack Overflow用户
提问于 2013-03-22 20:32:17
回答 3查看 19K关注 0票数 31

QCheckBox::toggled(bool)QCheckBox::clicked(bool)信号之间有什么实际区别吗?两者都有相同的签名,我连接到哪一个重要吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-22 20:36:48

每次checkbox的选中状态改变时都会发出toggled信号,即使它通过代码发生了变化,而clicked信号仅在用户与checkbox交互时发出,例如:

代码语言:javascript
复制
ui->checkbox->setChecked(true);  // toggled() will be emitted, but not clicked()
票数 55
EN

Stack Overflow用户

发布于 2013-03-22 20:37:26

已切换和已单击的QCheckBox继承。

代码语言:javascript
复制
void QAbstractButton::clicked ( bool checked = false ) [signal]

当按钮被激活(即,当鼠标光标在按钮内部时按下然后释放)、键入快捷键或调用click()或animateClick()时,会发出此信号。值得注意的是,如果调用setDown()、setChecked()或toggle(),则不会发出此信号。如果该按钮可选中,则checked为true,如果该按钮已选中,则为false;如果未选中该按钮,则为false。

代码语言:javascript
复制
void QAbstractButton::toggled ( bool checked ) [signal]

每当可选按钮改变其状态时,都会发出此信号。checked如果按钮处于选中状态,则为true;如果未选中按钮,则为false。这可能是用户操作的结果,单击()槽激活,或者因为调用了setChecked()。在发出该信号之前,独占按钮组中的按钮的状态被更新。这意味着插槽可以作用于状态已改变的组中的按钮发出的"off“信号或" on”信号。例如,可以使用以下模式实现对新选中的按钮发出的信号作出反应但忽略来自未选中的按钮的信号的槽:

代码语言:javascript
复制
 void MyWidget::reactToToggle(bool checked)
 {
    if (checked) {
       // Examine the new button states.
       ...
    }
 }

http://qt-project.org/doc/qt-4.8/qcheckbox.html

票数 7
EN

Stack Overflow用户

发布于 2013-03-22 20:36:57

代码语言:javascript
复制
QCheckBox::toggled(bool)

当复选框更改其状态时发出,无论是通过单击它,还是使用setCheckedtoggle等。

代码语言:javascript
复制
QCheckBox::clicked(bool)

在单击复选框时激发。也就是说,当用户单击并释放复选框时。当键入快捷键或使用click时也会发生。Check不一定要是可选中的才能发出此消息。

如果您正在侦听复选框的状态何时发生更改,请使用toggled。如果您正在监听用户单击复选框的时间,而不管状态是否更改,请使用clicked

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15570415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档