| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > QMenu |
| Автор: Riviero 2.6.2016, 14:37 |
| Создаётся QMenu в стиле: Пункт 1, Пункт 2 .... Пункт Х. Как определить на какой нажали. Или как передать параметр от Action(а)? |
| Автор: baldman88 2.6.2016, 16:12 | ||
| Пункты в меню добавляются двумя способами: 1. Прямое добавление QAction; 2. Создание QAction при добавлении пункта в меню. В первом случае Вы создаете QAction и соединяете его сигнал (triggered) с нужным слотом. Во втором случае QMenu возвращает созданный QAction, сигналы которого также соединяются с нужными слотами. Получилось сумбурно. Вот пример:
|
| Автор: baldman88 2.6.2016, 18:29 | ||||
Лучше опишите более конкретно задачу. Чего Вы хотите добиться? А то как-то не очень понятно в чем именно проблема |
| Автор: ss 2.6.2016, 19:33 | ||||
делаешь функцию добавления пункта напр.
или (ООП) можно переопределить QAction. и в методе Event (или свой метод написать) написать свой обработчик тогда после вызова QAction *a = menu.exec(x,y) получим ссылку на объект со своим обработчиком. |
| Автор: Riviero 7.6.2016, 15:57 | ||||
Пункты меню загружаются из БД, те мне надо знать в конечном итоге ID пункта меню, на который я нажал.
|
| Автор: baldman88 7.6.2016, 16:22 | ||||||||||
Это Вы что-то эдакое придумали ... Тогда можно попробовать сделать так:
В данном случае слот someSlot просто обертка, которая будет принимать в качестве параметра QAction, соответствующий нажатому пункту, и, исходя из "ЗНАЧЕНИЯ НУЖНЫХ ПАРАМЕТРОВ" (например text), вызывать соответствующую функцию. Что-то вроде:
|
| Автор: Riviero 7.6.2016, 17:00 | ||
Спасибо, то что надо. |
| Автор: borisbn 8.6.2016, 19:03 | ||
У QAction, как и у любого QObject есть http://doc.qt.io/qt-5/qobject.html#setProperty и http://doc.qt.io/qt-5/qobject.html#property.
|