![](/img/trans.png)
[英]QComboBox of QCheckBoxes, cant see QCheckBox, just the text
[英]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.