2

我想启用一个组合框——它在 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)

它可以正常工作以激活组合框。但是我不确定如何在未选中复选框时执行等效操作以停用组合框...

4

3 回答 3

2

该类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 中使用Signals and Slots Editing Mode设置这些类型的直接连接)

于 2015-11-18T19:18:13.723 回答
0
self.dlg.checkBox.stateChanged[int].connect(self.checkcombo) 

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

def checkcombo():
    if self.dlg.checkBox.isChecked():
        self.dlg.cmbvectorLayer6.setEnabled(True)
    else:
        self.dlg.cmbvectorLayer6.setEnabled(False)
于 2015-11-18T18:40:10.533 回答
0
if self.dlg.checkBox.isEnabled():
    self.dlg.cmbvectorLayer6.setEnabled(True)

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

于 2015-11-18T19:07:09.487 回答