#pyqt #signals-slots
#pyqt #сигналы-слоты
Вопрос:
У меня их 16 QDoubleSpinBoxes
, и я хочу знать, когда пользователь изменит данные в одном из них. Обратите внимание, что мне все равно, какой из них был изменен, мне нужно только знать, что один из них изменился.
Как я могу это сделать, не записывая 16 разных valueChanged()
сигналов / слотов? Возможно ли подключить «универсальный» valueChanged()
к слоту?
Большое вам спасибо.
Ответ №1:
Вы можете составить список из своего QSpinBox и использовать для этого цикл for:
for box in mySpinBoxes:
box.valueChanged.connect(self.myFunction)
Ответ №2:
Вы можете подключить столько сигналов, сколько хотите, к одному и тому же слоту. (Но на самом деле вам нужно будет подключить 16 сигналов по отдельности.)
Ответ №3:
Вы можете подключить все сигналы к одному и тому же слоту, а затем вы можете получить отправителя с помощью QObject.sender
метода. Или вам лучше взглянуть на QSignalMapper
класс.