Я собираю пользовательский интерфейс - пользователи предоставляют некоторую информацию, и код выполняется. У меня есть несколько флажков. Я хочу включить / отключить некоторые флажки в зависимости от состояния других флажков. Например, в моем пользовательском интерфейсе есть флажок, который позволяет пользователю указать, хочет ли он, чтобы файл печатался, и флажок, который позволяет пользователю указать, хочет ли он печатать в цвете. Если флажок «печать» не отмечен, я хочу снять и отключить флажок «цвет»: нет смысла позволять кому-то говорить, что он хочет печатать в цвете, если он не печатает.
Я вижу, как это сделать с помощью сигналов / слотов, но я довольно новичок в Qt, поэтому мне интересно, есть ли более чистый способ сделать это. Просмотр ButtonGroups был моим первым портом захода, но я не мог найти способ заставить его работать.
То, что у меня есть, выглядит примерно так. Я хочу подчеркнуть - это именно то, что я хочу, - я просто не уверен, что это лучший способ сделать это, и я бы не хотел ненавидеть себя, если я вернусь к коду через несколько месяцев с большим количеством знаний. Я был бы совершенно не удивлен, если бы были встроенные функции, которые достигли моих целей.
self.first_checkbox = QtWidgets.QCheckBox()
self.second_checkbox = QtWidgets.QCheckBox()
self.first_checkbox.stateChanged.connect(self._handleCheckboxStateChanged)
@QtCore.Slot()
def _handleCheckboxStateChange(self):
if self.first_checkbox.isChecked():
self.second_checkbox.setEnabled(True)
else:
self.second_checkbox.setEnabled(False)
self.second_checkbox.setChecked(False)