В моей форме есть несколько флажков, и я не хочу писать отдельный обработчик событий для каждого, потому что все они будут реализовывать одну и ту же логику. Вместо этого я хочу написать только один обработчик событий, который будет знать о том, какой флажок был нажат.
например. в Delphi я могу использовать это так:
function click_handler(sender):
begin
checked_box := sender.tag;
end;
Здесь я помню текущий номер флажка в некоторой переменной (свойство тега было установлено вручную в Delphi IDE).
Я искал и не могу найти, как реализовать это с помощью Qt, потому что обработчики событий не имеют аргумента sender
.
Я реализовал это так, но это не удобно:
# assign handlers (n assignments)
checkbox_1.clicked.connect(self.cb_1_click)
...
checkbox_<n>.clicked.connect(self.cb_<n>_click)
# separate handler for each check box (n functions, doing the same stupid work)
def cb_1_click:
self.cb_click(sender=1)
...
def cb_<n>_click:
self.cb_click(sender=n)
# main check box click logic (1 function)
def cb_click(sender):
# do something common for all checkboxes
Спасибо.