QCheckBox::toggled(bool)
和QCheckBox::clicked(bool)
信号之间有什么实际区别吗?两者都有相同的签名,我连接到哪一个重要吗?
发布于 2013-03-22 20:36:48
每次checkbox的选中状态改变时都会发出toggled
信号,即使它通过代码发生了变化,而clicked
信号仅在用户与checkbox交互时发出,例如:
ui->checkbox->setChecked(true); // toggled() will be emitted, but not clicked()
发布于 2013-03-22 20:37:26
已切换和已单击的QCheckBox继承。
void QAbstractButton::clicked ( bool checked = false ) [signal]
当按钮被激活(即,当鼠标光标在按钮内部时按下然后释放)、键入快捷键或调用click()或animateClick()时,会发出此信号。值得注意的是,如果调用setDown()、setChecked()或toggle(),则不会发出此信号。如果该按钮可选中,则checked为true,如果该按钮已选中,则为false;如果未选中该按钮,则为false。
void QAbstractButton::toggled ( bool checked ) [signal]
每当可选按钮改变其状态时,都会发出此信号。checked如果按钮处于选中状态,则为true;如果未选中按钮,则为false。这可能是用户操作的结果,单击()槽激活,或者因为调用了setChecked()。在发出该信号之前,独占按钮组中的按钮的状态被更新。这意味着插槽可以作用于状态已改变的组中的按钮发出的"off“信号或" on”信号。例如,可以使用以下模式实现对新选中的按钮发出的信号作出反应但忽略来自未选中的按钮的信号的槽:
void MyWidget::reactToToggle(bool checked)
{
if (checked) {
// Examine the new button states.
...
}
}
发布于 2013-03-22 20:36:57
QCheckBox::toggled(bool)
当复选框更改其状态时发出,无论是通过单击它,还是使用setChecked
或toggle
等。
QCheckBox::clicked(bool)
在单击复选框时激发。也就是说,当用户单击并释放复选框时。当键入快捷键或使用click
时也会发生。Check不一定要是可选中的才能发出此消息。
如果您正在侦听复选框的状态何时发生更改,请使用toggled
。如果您正在监听用户单击复选框的时间,而不管状态是否更改,请使用clicked
。
https://stackoverflow.com/questions/15570415
复制相似问题