2014-08-14 2 views
1

У меня есть список QActions, некоторые из них добавляются в меню верхнего уровня, а некоторые добавляются в подменю верхнего уровня.Как узнать родительское меню данного QAction?

Есть ли способ узнать имя родительского меню для каждого действия?

QAction *act; 

Я пытаюсь act->parentWidget(). Но как я могу получить название меню?

ответ

2

Вы можете проверить, является ли результат act->parentWidget(), если он действительный указатель, если вы можете манипулировать как обычный виджет.

Чтобы получить имя меню, это зависит от того, какой виджет вы используете.

Если QMenu, вы можете получить название меню через функцию заголовка.

QAction *act; 
... 
QWidget *widget = act->parentWidget(); 
if (widget) { 
    QMenu *menu = dynamic_cast<QMenu*>(widget); 
    menu->title(); 
} 
+0

Спасибо, Позвольте мне попробовать это. Я не очень разбираюсь в кастингах, так что динамический_cast является самым безопасным способом? – Maverick33

+2

@Brijesh Это безопасно, но вы также должны взглянуть на ['qobject_cast'] (http://qt-project.org/doc/qt-4.8/qobject.html#qobject_cast). Подробнее об этом [здесь] (http://qt-project.org/doc/qt-4.8/metaobjects.html). – thuga

Смежные вопросы