2013-03-22 363 views

回答

38

toggled信号被发射每个复选框的选中状态的变化,即使它通过代码更改时间,而clicked信号emited只有当用户与所述复选框相互作用,例如:

ui->checkbox->setChecked(true); // toggled will be emitted but not clicked 
3
QCheckBox::toggled(bool) 

该复选框时改变它的状态,不管是通过点击它或使用setCheckedtoggle发射等

QCheckBox::clicked(bool) 

单击复选框时发出。也就是说,当用户在复选框上单击并释放时。当键入快捷键或使用click时也会发生。复选框不一定要检查以便发射。

如果您在侦听复选框状态发生变化时,请使用toggled。如果您在监听用户单击复选框时的状态,则无论是否更改状态,请使用clicked

6

QCheckBox继承切换和单击。

void QAbstractButton::clicked (bool checked = false) [signal] 

当按钮被激活时,这个信号被发射(即,按下然后释放在鼠标光标位于按钮内),当快捷键被输入,或当点击()或animateClick()被调用。值得注意的是,如果调用setDown(),setChecked()或toggle(),则不会发出此信号。 如果该按钮是可检查的,如果该按钮被选中,则检查为true;如果该按钮未被检查,则检查为false。

void QAbstractButton::toggled (bool checked) [signal] 

只要可检查按钮改变其状态就会发出此信号。如果按钮被选中,则检查为true;如果未选中该按钮,则检查为false。 这可能是由于用户操作,单击()插槽激活,或者因为调用了setChecked()。 在发出此信号之前,专用按钮组中的按钮状态会更新。这意味着插槽可以作用于状态发生变化的组中按钮所发出的“关闭”信号或“开启”信号。 例如,反应通过新检出的按钮发出的信号,但一个槽,其从已被取消选中可以使用以下的图案来实现按钮忽略信号:

void MyWidget::reactToToggle(bool checked) 
{ 
    if (checked) { 
     // Examine the new button states. 
     ... 
    } 
} 

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