我想启用一个组合框 - 它在Qt Designer中的属性编辑器中被禁用 - 但是,仅当用户选中复选框时才会这样。我写了以下内容,但它不起作用。它被放在我的mainclass的__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)
并且它可以正常工作以激活组合框。但是,如果取消选中该复选框,我不确定如何取消激活组合框...
答案 0 :(得分:2)
QCheckBox
类继承QAbstractButton
,因此您可以使用toggled信号执行您想要的操作:
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)
(你也可以使用Signals and Slots Editing Mode在Qt Designer中设置这些直接连接)
答案 1 :(得分: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)
答案 2 :(得分:0)
if self.dlg.checkBox.isEnabled():
self.dlg.cmbvectorLayer6.setEnabled(True)
检查状态是否已检查,但您需要检查isEnabled