2015-11-18 2 views
2

Я хочу включить комбобокс, который отключен в редакторе свойств в Qt Designer, но только если пользователь проверяет флажок. Я написал следующее, но он не работает. Он помещается внутри метода __init__ моего основного класса. Не могли бы вы помочь мне понять, почему?Как подключить состояние QChekBox к состоянию QComboBox?

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

EDIT:

теперь у меня есть следующие в __init__ метод моего основного класса:

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

с enablecombo существа:

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

и это работает штраф, чтобы активировать со списками. Но я не знаю, как сделать эквивалент для того, чтобы процедура сопряжения с выпадающих списков, когда флажок снят ...

ответ

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) 

(Вы также можете настроить эти виды прямых соединений в Qt Designer, используя Signals and Slots Editing Mode)

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) 
+0

Возможно, я не писал это хорошо .. combobox отключен, а не флажок. Но если пользователь хочет использовать combobox, сначала необходимо установить флажок, чтобы включить combobox. – Eleftheria

+0

извините, я неправильно читаю вопросы Тион. какая ошибка вы получили? основанный на вашем коде, он должен работать – user5509884

+0

thanx, он работает, и я также понимаю это. Просто в def checkcombo() необходимо передать аргумент self – Eleftheria

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

вы проверить состояние проверяется, но вы должны проверить IsEnabled

+0

, флажок должен быть всегда включен. Это когда проверяется, что отключенный combobox должен стать включенным – Eleftheria

Смежные вопросы