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



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

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

编辑

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

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

其中enablecombo为:

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

并且它工作良好以便激活组合框。但我不知道如何在取消选中复选框时取消激活组合框。。。

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

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

或者直接连接到组合框:

    self.dlg.checkBox.toggled.connect(self.dlg.cmbvectorLayer6.setEnabled)

(您也可以在Qt Designer中使用信号和插槽编辑模式设置这些类型的直接连接)

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

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

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

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

def checkcombo():
    if self.dlg.checkBox.isChecked():
        self.dlg.cmbvectorLayer6.setEnabled(True)
    else:
        self.dlg.cmbvectorLayer6.setEnabled(False)

相关内容

  • 没有找到相关文章

最新更新