QCheckBox::toggled()和QCheckBox::clicked()之间有什么区别

What is the difference between QCheckBox::toggled() and QCheckBox::clicked()?

本文关键字:QCheckBox 什么 区别 toggled clicked 之间      更新时间:2023-10-16

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

每次复选框的检查状态发生变化时,即使通过代码发生变化,也会发出toggled信号,而clicked信号只有在用户与复选框交互时才会发出,例如:

ui->checkbox->setChecked(true);  // toggled() will be emitted, but not clicked()

QCheckBox Inherit同时切换和单击。

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

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

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

每当可检查按钮改变其状态时,就会发出此信号。如果选中了按钮,则checked为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

QCheckBox::toggled(bool)

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

QCheckBox::clicked(bool)

单击复选框时发出。也就是说,当用户单击并释放复选框时。当键入快捷键或使用click时也会发生这种情况。复选框不一定必须是可勾选的才能发出。

如果您正在侦听复选框的状态何时更改,请使用toggled。如果您正在侦听用户单击复选框的时间,无论该复选框是否更改状态,请使用clicked