Qt 是否可以更改可检查QGroupBox的默认行为?

Qt 是否可以更改可检查QGroupBox的默认行为?,qt,behavior,qgroupbox,Qt,Behavior,Qgroupbox,问题很简单:是否可以更改可检查QGroupBox对象的默认行为?我在一个可检查的QGroupBox中设计了一个包含许多QLineEdit对象的用户界面,期望的行为是:当QGroupBox未被选中时,它的所有子项都是启用的,当它被选中时,它的所有子项都是禁用的 正如您在官方QGroupBox文档中所看到的,它说: 如果选中该复选框,则启用组框的子项;否则,子项将被禁用,用户无法访问 一个技巧是修改绘画,以便在选中时不显示复选框,反之亦然: #包括 类别GroupBox:公共QGroupBox{ 公

问题很简单:是否可以更改可检查QGroupBox对象的默认行为?我在一个可检查的QGroupBox中设计了一个包含许多QLineEdit对象的用户界面,期望的行为是:当QGroupBox未被选中时,它的所有子项都是启用的,当它被选中时,它的所有子项都是禁用的

正如您在官方QGroupBox文档中所看到的,它说:

如果选中该复选框,则启用组框的子项;否则,子项将被禁用,用户无法访问


一个技巧是修改绘画,以便在选中时不显示复选框,反之亦然:

#包括
类别GroupBox:公共QGroupBox{
公众:
使用QGroupBox::QGroupBox;
受保护的:
无效paintEvent(QPaintEvent*){
油漆(这件);
QStyleOptionGroupBox选项;
initStyleOption(&option);
如果(isCheckable()){
option.state&=~(isChecked()?QStyle::state\u打开:QStyle::state\u关闭);
option.state |=(isChecked()?QStyle::state_关闭:QStyle::state_打开);
}
paint.drawComplexControl(QStyle::CC_GroupBox,选项);
}
};
int main(int argc,char*argv[])
{
质量保证申请a(argc、argv);
GroupBox-GroupBox;
groupBox.setCheckable(true);
QVBoxLayout*vbox=新的QVBoxLayout;
vbox->addWidget(新QLineEdit);
vbox->addWidget(新QLineEdit);
vbox->addWidget(新QLineEdit);
vbox->addStretch(1);
groupBox.setLayout(vbox);
groupBox.show();
返回a.exec();
}

是否可以将其子类化并重写实现所述行为的函数而不是paintEvent?@SávioBrilhante我想按照您所说的做,但糟糕的是,启用/禁用childrens的部分是由无法重写的私有Qt API实现的。更多信息请查看:谢谢,它确实起作用了。然而,我对编程,尤其是使用图形界面编程是新手,我想知道:这是最好的解决方案吗?