Я внедряю меню времени выполнения для кнопки (QPushButton) в моем приложении, пользователь должен выбирать между ftp и http, когда он нажимает кнопку загрузки.
QMenu menu(this);
menu.addAction("ftp");
menu.addAction("http");
ui.mUploadBtn->setMenu(&menu);
ui.mUploadBtn->showMenu();
Мой вопрос заключается в том, как я могу узнать, какой пользователь выбрал выбор или его функция, чтобы получить это.
благодарю вас
Один из способов поймать результат меню — сделать это:
QAction* action = menu.exec(QCursor::pos());
Тогда вы можете использовать
action->text()==QString("ftp")
Чтобы узнать, нажал ли пользователь на «FTP».
Так, как сказал Фрэнк Остерфельд в комментариях, вы также можете создать слот в своем классе и подключить к нему сигнал действия триггера меню:
connect(&menu, SIGNAL(triggered(QAction*)), this, SLOT( sl_OnMenuTriggered(QAction* )));
void sl_OnMenuTriggered(QAction* _action)
{
if(_action->text()=="ftp") ...
}
Это «не блокирующий» способ.
Других решений пока нет …