Russian Qt Forum
Сентябрь 30, 2024, 18:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QMenu  (Прочитано 6254 раз)
qtист
Гость
« : Сентябрь 30, 2009, 13:52 »

Вот создаётся меню с кучей пунктов.
Как узнать какой по порядку пункт был выбран?
Записан
CroCIV
Гость
« Ответ #1 : Сентябрь 30, 2009, 14:06 »

Вопрос не понятен.
каждому пункту меню соответствует свой QAction. Какой QAction сработал, тот и был выбран.  Улыбающийся
Записан
shadone
Гость
« Ответ #2 : Октябрь 01, 2009, 11:35 »

Вероятно поможет QWidget::actions()
Записан
Alp
Гость
« Ответ #3 : Октябрь 01, 2009, 12:36 »

Вот создаётся меню с кучей пунктов.
Как узнать какой по порядку пункт был выбран?
mymenu->actions().indexof( mymenu->exec() )
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #4 : Октябрь 01, 2009, 12:43 »

Вот создаётся меню с кучей пунктов.
Как узнать какой по порядку пункт был выбран?
mymenu->actions().indexof( mymenu->exec() )
А вот интересно, че будет, если быбор не осуществлен Улыбающийся
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
spectre71
Гость
« Ответ #5 : Октябрь 01, 2009, 14:21 »

Вот создаётся меню с кучей пунктов.
Как узнать какой по порядку пункт был выбран?

А какой в этом смысл? В чем заключается задача?
Записан
shadone
Гость
« Ответ #6 : Октябрь 01, 2009, 14:35 »

Вот создаётся меню с кучей пунктов.
Как узнать какой по порядку пункт был выбран?
забыл упомянуть - есть более удобный способ - можно ассоциировать любые данные в QAction (например положить индекс элемента в меню внутрь самого QAction) - тогда в обработчике достаточно будет просто взять данные из отправителя сигнала.
см http://doc.qt.nokia.com/4.5/qaction.html#setData
Записан
Alp
Гость
« Ответ #7 : Октябрь 01, 2009, 16:04 »

Вот создаётся меню с кучей пунктов.
Как узнать какой по порядку пункт был выбран?
mymenu->actions().indexof( mymenu->exec() )
А вот интересно, че будет, если быбор не осуществлен Улыбающийся
Тогда будет упс и ай-ай-ай. Точнее, будет ASSERT. Думаю в релизе просто молчаливо проглотится.
Записан
Rcus
Гость
« Ответ #8 : Октябрь 01, 2009, 16:11 »

Вот создаётся меню с кучей пунктов.
Как узнать какой по порядку пункт был выбран?
mymenu->actions().indexof( mymenu->exec() )
А вот интересно, че будет, если быбор не осуществлен Улыбающийся
Тогда будет упс и ай-ай-ай. Точнее, будет ASSERT. Думаю в релизе просто молчаливо проглотится.
С чего бы? по контракту если пункт не выбран QMenu::exec() вернет 0, QList<T>::indexOf() вернет -1 если элемент не найден. Хм...
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #9 : Октябрь 01, 2009, 16:14 »

Вот создаётся меню с кучей пунктов.
Как узнать какой по порядку пункт был выбран?
Просто дополнение к тому что уже ответили: Вам не нужно извлекать индекс и потом его "декодировать" - просто заряжайте обработчики через слот/сигнал и индекс Вас не волнует
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.063 секунд. Запросов: 23.