信号QCheckBox::toggled(bool)和QCheckBox::clicked(bool)信号之间是否存在实际差异?两者都有相同的签名,我连接哪一个都很重要?
pne*_*zis 48
该toggled信号被发射每个复选框的选中状态的变化,即使它改变通过代码,而时间clicked只有当用户与对应的复选框,例如交互信号emited:
ui->checkbox->setChecked(true); // toggled will be emitted but not clicked
Run Code Online (Sandbox Code Playgroud)
QCheckBox继承切换和单击.
void QAbstractButton::clicked ( bool checked = false ) [signal]
Run Code Online (Sandbox Code Playgroud)
当按钮被激活时(即按下然后在鼠标光标位于按钮内部时释放),键入快捷键或调用click()或animateClick()时,会发出此信号.值得注意的是,如果调用setDown(),setChecked()或toggle(),则不会发出此信号.如果按钮是可检查的,则选中该按钮时检查为true;如果未选中该按钮则检查为false.
void QAbstractButton::toggled ( bool checked ) [signal]
Run Code Online (Sandbox Code Playgroud)
只要可检查按钮改变其状态,就会发出此信号.如果选中该按钮,则为true;如果未选中该按钮,则为false.这可能是用户操作,click()槽激活或调用setChecked()的结果.在发出此信号之前,将更新专用按钮组中按钮的状态.这意味着插槽可以作用于"关闭"信号或由状态已改变的组中的按钮发出的"开启"信号.例如,可以使用以下模式实现一个插槽,该插槽对新检查的按钮发出的信号做出反应,但忽略来自未经检查的按钮的信号.
void MyWidget::reactToToggle(bool checked)
{
if (checked) {
// Examine the new button states.
...
}
}
Run Code Online (Sandbox Code Playgroud)
http://qt-project.org/doc/qt-4.8/qcheckbox.html