Нужно переопределить сигнал clicked и передать в него аргументы
Суть проста, не хочу городить два обработчика для кнопок у, которых по сути одно применение. Есть некоторое поле, слева и справа две мои кнопки. При нажатии на правую открывается модальное окно, при нажатие на левую тоже открывается модальное окно, разница лишь в тексте кнопок на модальном окне. Вот хотел бы просто передавать некоторый enum в кнопку, по которому потом и получал нужный текст в открывающемся модальном окне
Пишу свой собственный класс, наследующийся от QPushButton, нужно переопределить сигнал clicked и передать в него аргументы, как это сделать?
Ответы (1 шт):
Можно (и лучше) создать свой сигнал, со своим именем (чтобы потом не заниматься приведением сигнала с нужным типом аргумента):
class MyButton : public QPushButton {
Q_OBJECT
private:
EnumType type;
public:
MyButton(EnumType type, QWidget* parent =nullptr) : QPushButton(parent), type(type) {
connect(this, &QPushButton::clicked, [&]() {
emit myClicked(type);
});
}
signals:
void myClicked(EnumType value);
}
И далее, где-то в коде:
connect(myButton /*указатель*/, &MyButton::myClicked, /*получатель сигнала с аргументом*/);