Версия для печати темы
Форум на CrossPlatform.RU _ Qt Общие вопросы _ QAction и QMenu
Автор: AD 14.9.2010, 10:36
Как определить в каком меню (QMenu) данная опция (QAction) находится? Нашел в ассистенте, как определить есть в самой опции подменю, а вот эту задачу решить не нашел. Кто сможет подсказать?
Автор: Алексей1153 14.9.2010, 11:18
я вот так сделал )
http://www.forum.crossplatform.ru/index.php?showtopic=981&view=findpost&p=37207
Автор: AD 14.9.2010, 11:39
Цитата(Алексей1153 @ 14.9.2010, 12:18)

я вот так сделал )
http://www.forum.crossplatform.ru/index.php?showtopic=981&view=findpost&p=37207
многословно и непонятно, что именно относится к моему вопросу. Можно немного короче и одним, двумя предложениями?
SetMenu - это не то!
Автор: SABROG 14.9.2010, 11:40
Цитата(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 14.9.2010, 11:46
Цитата(SABROG @ 14.9.2010, 12:40)

Так?
Ну да. Спасибо. Только я думал, что есть встроенная операция. Писать свои и сам умею!
Автор: kwisp 14.9.2010, 11:46
Цитата(AD @ 14.9.2010, 11:36)

Как определить в каком меню (QMenu) данная опция (QAction) находится? Нашел в ассистенте, как определить есть в самой опции подменю, а вот эту задачу решить не нашел. Кто сможет подсказать?
код можешь привести?
у действия хозяин есть?
SABROG,
касательно к твоему коду - у QList< > есть метод contains()
Автор: SABROG 14.9.2010, 11:52
Цитата(kwisp @ 14.9.2010, 12:46)

касательно к твоему коду - у QList< > есть метод contains()
Хорошее замечание, про него то я и забыл.
if (menu->actions().contains(action))
Автор: AD 14.9.2010, 11:56
Цитата(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 14.9.2010, 12:08
спрошу еще раз - хозяин у действия есть parent() ?
Автор: AD 14.9.2010, 12:29
Цитата(kwisp @ 14.9.2010, 13:08)

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

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

многословно и непонятно, что именно относится к моему вопросу. Можно немного короче и одним, двумя предложениями?
SetMenu - это не то!
вообще-то речь была про map ))
Автор: AD 14.9.2010, 15:11
Цитата(Алексей1153 @ 14.9.2010, 15:29)

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

AD, у тебя, видимо, просто менюшка несложная. А так бы ты плюс увидел

Наглядность заполнения, и раздельное наполнение вложенных меню
Когда я что-то спрашиваю, то хочу услышать ответ на конкретный вопрос!

Не обижайся. Мне не нужна какая другая функциональность!

Только без обид. А твоем коде ответа на конкретный вопрос не было совсем.
Автор: Алексей1153 15.9.2010, 12:45
да лан, вешаться не пойду уж
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)