Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Emc от Января 16, 2008, 15:59



Название: QMenuBar
Отправлено: Emc от Января 16, 2008, 15:59
есть QMainWindow, есть QMenu
Код:
QMenu* menu = new QMenu("текст");
menu->setObjextName("menuName");
mainWindow->menuBar()->addMenu(menu);
работает - меню вижу
теперь вопрос
Код:
foreach (QObject* obj, mainWindow->menuBar()->children())
{
  cout<<obj->objectName().toStdString()<<endl;
}
почему этот код вместо моего меню возвращает "qt_menubar_ext_button" - собственно что это?


Название: Re: QMenuBar
Отправлено: pastor от Января 16, 2008, 16:08
Когда главное окно ресайзиться до таких размеров, что меню-бар не помещаеться на экране, то справа на меню-баре увидим кнопку (со значком "стрелка вниз"). Помоему qt_menubar_ext_button и есть эта кнопка.


Название: Re: QMenuBar
Отправлено: Emc от Января 16, 2008, 16:11
гм похоже на правду. Теперь еще бы выяснить где мое меню..


Название: Re: QMenuBar
Отправлено: pastor от Января 16, 2008, 16:19
имхо, при при  mainWindow->menuBar()->addMenu(menu); не происходить репарент. Это предположение можно отдебажить или просто глянуть сырцы. Как вариант, в конструктор  QMenu передать парент - менюбар.

Или создавать меню в таком виде:

Код:
menu = menuBar()->addMenu("Тест");


Название: Re: QMenuBar
Отправлено: Emc от Января 16, 2008, 16:21
у меня там сложная система плагинов - работа возможна только через objectName...
спасибо за помощь - буду искать ошибку


Название: Re: QMenuBar
Отправлено: Emc от Января 16, 2008, 16:30
ну собственно parent  действительно не меняется -- ну это вроде нормально, оди и тот же action может быть и в меню и на toolbar'e,
- значит при создание menu нужно явно прописывать родителя