Уведомления
Очистить все
Здравствуйте!
У меня есть много кнопок и не хочется под каждую делать свой обработчик нажатия... Тем более, что по нажатию этих кнопок выполняются схожие действия. Поэтому сделал один общий слот и подключил к нему сигналы кнопок, примерно так это выглядит:
QObject::connect(ui->button1, &QPushButton::clicked, this, &MainWindow::buttonClicked); QObject::connect(ui->button2, &QPushButton::clicked, this, &MainWindow::buttonClicked); QObject::connect(ui->button3, &QPushButton::clicked, this, &MainWindow::buttonClicked); // ...
Вопрос - можно ли (и как) внутри слота buttonClicked() определить программно, какая именно кнопка была нажата и в зависимости от этого выбрать нужные действия?
Создатель темы Размещено : 30.01.2025 11:26
Добрый день, можно через QObject::sender():
void MainWindow::buttonClicked()
{
QPushButton *sender = dynamic_cast<QPushButton*>(QObject::sender());
if (sender != nullptr)
{
if (sender == ui->button1)
{
// Do something
}
}
}
Размещено : 30.01.2025 13:44
Лучше qobject_cast использовать:
QPushButton *sender = qobject_cast<QPushButton*>(QObject::sender());
Размещено : 30.01.2025 18:30
Лучше qobject_cast использовать:
QPushButton *sender = qobject_cast<QPushButton*>(QObject::sender());
да, действительно, поправлю у себя заодно в проекте )))
Размещено : 30.01.2025 19:08
Все получилось, внутри слота определил какая кнопка нажата и дальше уже разные действия в зависимости от кнопки. Появился вопрос по qobject_cast, создал новую тему)
Создатель темы Размещено : 31.01.2025 13:25