如何将 QChekBox 状态连接到 QComboBox 状态?
How to connect QChekBox state to QComboBox state?
我想启用一个组合框 - 它在 Qt Designer 的属性编辑器中被禁用 - 但是,只有当用户选中该复选框时。我写了以下内容,但它不起作用。它放在我的 mainclass 的 __init__
方法中。你能帮我理解为什么吗?
if self.dlg.checkBox.isChecked():
self.dlg.cmbvectorLayer6.setEnabled(True)
编辑:
我现在在 class 的 __init__
方法中有以下内容:
self.dlg.checkBox.stateChanged[int].connect(self.enablecombo)
其中 enablecombo
为:
def enablecombo(self):
self.dlg.cmbvectorLayer6.setEnabled(True)
它可以很好地激活组合框。但是我不确定如何做等效的事情以便在未选中复选框时禁用组合框...
self.dlg.checkBox.stateChanged[int].connect(self.checkcombo)
whatewer 是当前状态,只需调用一个函数来检查它,然后根据它的输出 enable/disable it
def checkcombo():
if self.dlg.checkBox.isChecked():
self.dlg.cmbvectorLayer6.setEnabled(True)
else:
self.dlg.cmbvectorLayer6.setEnabled(False)
if self.dlg.checkBox.isEnabled():
self.dlg.cmbvectorLayer6.setEnabled(True)
你检查的状态是checked但是你需要检查isEnabled
QCheckBox
class继承了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)
(您也可以在 Qt Designer 中设置这些类型的直接连接,方法是使用 Signals and Slots Editing Mode)
我想启用一个组合框 - 它在 Qt Designer 的属性编辑器中被禁用 - 但是,只有当用户选中该复选框时。我写了以下内容,但它不起作用。它放在我的 mainclass 的 __init__
方法中。你能帮我理解为什么吗?
if self.dlg.checkBox.isChecked():
self.dlg.cmbvectorLayer6.setEnabled(True)
编辑:
我现在在 class 的 __init__
方法中有以下内容:
self.dlg.checkBox.stateChanged[int].connect(self.enablecombo)
其中 enablecombo
为:
def enablecombo(self):
self.dlg.cmbvectorLayer6.setEnabled(True)
它可以很好地激活组合框。但是我不确定如何做等效的事情以便在未选中复选框时禁用组合框...
self.dlg.checkBox.stateChanged[int].connect(self.checkcombo)
whatewer 是当前状态,只需调用一个函数来检查它,然后根据它的输出 enable/disable it
def checkcombo():
if self.dlg.checkBox.isChecked():
self.dlg.cmbvectorLayer6.setEnabled(True)
else:
self.dlg.cmbvectorLayer6.setEnabled(False)
if self.dlg.checkBox.isEnabled():
self.dlg.cmbvectorLayer6.setEnabled(True)
你检查的状态是checked但是你需要检查isEnabled
QCheckBox
class继承了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)
(您也可以在 Qt Designer 中设置这些类型的直接连接,方法是使用 Signals and Slots Editing Mode)