如何将QChekBox状态连接到QComboBox状态?

2024-10-01 07:45:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我想启用一个组合框,它在Qt设计器的属性编辑器中被禁用,但是,只有当用户选中复选框时。我写了以下内容,但它不起作用。它被放在主类的__init__方法中。你能帮我解释一下为什么吗?在

if self.dlg.checkBox.isChecked():
    self.dlg.cmbvectorLayer6.setEnabled(True)

编辑

现在,在主类的__init__方法中有以下内容:

^{pr2}$

其中enablecombo为:

def enablecombo(self):
    self.dlg.cmbvectorLayer6.setEnabled(True)

它可以很好地激活组合框。但我不知道如何做等效的,以禁用组合框时,复选框取消选中。。。在


Tags: 方法用户selftrueif属性init编辑器
3条回答
if self.dlg.checkBox.isEnabled():
    self.dlg.cmbvectorLayer6.setEnabled(True)

您检查状态是否已检查,但您需要检查isEnabled

self.dlg.checkBox.stateChanged[int].connect(self.checkcombo) 

什么是当前状态,只需调用一个检查它的函数,然后根据它的输出启用/禁用它

^{pr2}$

QCheckBox类继承QAbstractButton,因此您可以使用toggled信号来执行您想要的操作:

    self.dlg.checkBox.toggled.connect(self.enablecombo)
    ...

def enablecombo(self, checked):
    self.dlg.cmbvectorLayer6.setEnabled(checked)

或直接连接到组合框:

^{pr2}$

(也可以在Qt设计器中设置这些类型的直接连接,方法是使用Signals and Slots Editing Mode

相关问题 更多 >