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