Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QAction и QMenu
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
AD
Как определить в каком меню (QMenu) данная опция (QAction) находится? Нашел в ассистенте, как определить есть в самой опции подменю, а вот эту задачу решить не нашел. Кто сможет подсказать?
Алексей1153
я вот так сделал )
http://www.forum.crossplatform.ru/index.ph...ost&p=37207
AD
Цитата(Алексей1153 @ 14.9.2010, 12:18) *

многословно и непонятно, что именно относится к моему вопросу. Можно немного короче и одним, двумя предложениями?
SetMenu - это не то!
SABROG
Цитата(AD @ 14.9.2010, 12:39) *
Можно немного короче и одним, двумя предложениями?


Так?

bool menuContainsAction(const QMenu* menu, const QAction* action)
{
    QListIterator<QAction*> iter(menu->actions());
    while(iter.hasNext())
        if (iter.next() == action)
            return true;
    return false;
}
AD
Цитата(SABROG @ 14.9.2010, 12:40) *
Так?

Ну да. Спасибо. Только я думал, что есть встроенная операция. Писать свои и сам умею! :)
kwisp
Цитата(AD @ 14.9.2010, 11:36) *
Как определить в каком меню (QMenu) данная опция (QAction) находится? Нашел в ассистенте, как определить есть в самой опции подменю, а вот эту задачу решить не нашел. Кто сможет подсказать?

код можешь привести?
у действия хозяин есть?
SABROG,
касательно к твоему коду - у QList< > есть метод contains()
SABROG
Цитата(kwisp @ 14.9.2010, 12:46) *
касательно к твоему коду - у QList< > есть метод contains()

Хорошее замечание, про него то я и забыл.

if (menu->actions().contains(action))
AD
Цитата(kwisp @ 14.9.2010, 12:46) *
код можешь привести?
у действия хозяин есть?

Какой код? Есть, к примеру, следующие меню:
File Edit View etc
у них есть опции:
New Window Ctrl+O [File]

Zoom In [View]

Как определить, зная опцию Zoom In, что она находится в меню View?

Цитата(SABROG @ 14.9.2010, 12:52) *
Хорошее замечание, про него то я и забыл.

if (menu->actions().contains(action))

Блин. Это не то. Все это предполагает перебор всех менюшек. Есть ли возможность, зная только опцию QAction, узнать меню, в котором находится эта опция.
kwisp
спрошу еще раз - хозяин у действия есть parent() ?
AD
Цитата(kwisp @ 14.9.2010, 13:08) *
спрошу еще раз - хозяин у действия есть parent() ?

parent() возвращает непустой указатель, значит есть. Но это ведь объект класс QObject?
kwisp
Цитата(AD @ 14.9.2010, 13:29) *
parent() возвращает непустой указатель, значит есть. Но это ведь объект класс QObject?

ну если хозяин именно меню, то по objectName() либо по его property() можно определить какое именно меню содержит данное действие. в objectName() или property() можно засунуть что угодно хоть индекс массива где хранятся все меню... тут что угодно.
есть qobject_cast<>() в конце концов.
Алексей1153
Цитата(AD @ 14.9.2010, 14:39) *
многословно и непонятно, что именно относится к моему вопросу. Можно немного короче и одним, двумя предложениями?
SetMenu - это не то!

вообще-то речь была про map ))
AD
Цитата(Алексей1153 @ 14.9.2010, 15:29) *
вообще-то речь была про map ))

Ну я и ответил. Многословно и слишком заморочно для такой простой функции! ;)
Алексей1153
AD, у тебя, видимо, просто менюшка несложная. А так бы ты плюс увидел :) Наглядность заполнения, и раздельное наполнение вложенных меню
AD
Цитата(Алексей1153 @ 14.9.2010, 19:22) *
AD, у тебя, видимо, просто менюшка несложная. А так бы ты плюс увидел :) Наглядность заполнения, и раздельное наполнение вложенных меню

Когда я что-то спрашиваю, то хочу услышать ответ на конкретный вопрос! :) Не обижайся. Мне не нужна какая другая функциональность! :) Только без обид. А твоем коде ответа на конкретный вопрос не было совсем.
Алексей1153
да лан, вешаться не пойду уж :D
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2021 IPS, Inc.