Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: pashazz от Июнь 25, 2009, 21:36



Название: Найти child item в QMenu
Отправлено: pashazz от Июнь 25, 2009, 21:36
Нужно найти child item  в данной менюшке или ее детях по свойству title.
Как это сделать? Ассистент ничего внятного не дал.


Название: Re: Найти child item в QMenu
Отправлено: denka от Июнь 25, 2009, 22:18
QMenu наследник QObject. Следовательно тебе надо что то типа такого:
Код:
const QObjectList list = menu.children();
for(int i = 0; i < list.size(); ++i)
{
    if (QAction * action = qobject_cast<QAction*>(list)) {
          if (action->text() == text) { // нашли то что хотели
             ...
          }
    }
}
Думаю изменения с поиском в подменю не составят проблем :)


Название: Re: Найти child item в QMenu
Отправлено: pashazz от Июнь 26, 2009, 07:57
Я задал бы тему в вопросы новичков и ожидал бы именно такого ответа, если бы не попробовал сам.
Через children и qobject_cast я уже пробовал - не получается.


Название: Re: Найти child item в QMenu
Отправлено: SABROG от Июнь 26, 2009, 08:33
Пиши рекурсивную функцию обхода дерева меню. Бери изначальный указатель на QMenu, вызывай у него метод actions(). Проходи по каждому элементу (QAction) списка и вызывай QAction::menu(), повторяй цикл заново с новым указателем.

Насчет метода не уверен, надо пробовать.