繁体   English   中英

如何制作一个 QCheckBox 来(取消)检查多个 QCheckBox?

[英]How can I make a QCheckBox for (un)checking several QCheckBoxes?

我正在编写QCheckBox一个子类,我想向用户显示它以检查或取消选中一组现有的复选框。 它通过对复选框的toggled(bool)信号做出反应来工作。

“主”复选框必须是三态复选框。 当一些“从”复选框被选中但不是全部被选中时,主被设置为Qt::CheckState::PartiallyChecked

它不够好。 尽管我想在我的代码中将主复选框设置为“部分选中”,但用户不应该这样做。 单击主复选框应完全选中所有复选框,除非所有复选框都已选中。 在这种情况下,它应该取消选中它们。 然而,当我单击它时,我的主复选框也会切换到中间状态。

我想我可以通过覆盖void QAbstractButton::checkStateSet()void QAbstractButton::nextCheckState()来改变它,但我不了解这些方法的文档。 他们应该怎么做? 以及如何覆盖它们以获得预期的行为?

nextCheckState()方法在单击复选框以更改检查状态时调用。

您可以覆盖QCheckBox::nextCheckState()方法以根据当前检查状态设置新的检查状态。

例子:

void MyCheckBox::nextCheckState()
{
    if(checkState() == Qt::Checked)
        setCheckState(Qt::Unchecked);
    else
        setCheckState(Qt::Checked);
}

这样,当用户单击复选框时, Qt::PartiallyChecked状态永远不会设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM