Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt GUI _ Создание пунктов меню, на лету.

Автор: ubuntu 31.10.2007, 15:08

Я могу в Qt Designer'e создать меню, добавить в него те, что мне нужно пункты, назначить им сигналы и слоты, в результате чего у меня запишется это все в файл *.ui примерно следующее:

  <connection>
   <sender>actionExit</sender>
   <signal>triggered()</signal>
   <receiver>MainWindow</receiver>
   <slot>close()</slot>
   <hints>
    <hint type="sourcelabel" >
     <x>55</x>
     <y>31</y>
    </hint>
    <hint type="destinationlabel" >
     <x>199</x>
     <y>149</y>
    </hint>
   </hints>
  </connection>
Но вот возникла необходимости еще в диначмическом добавлении пунктов меню, а как это сделать ума не приложу. :(

Автор: ViGOur 31.10.2007, 15:53

Так:

class ...
{
   ...
   QMenu *m_pFileMenu;
   QMenu *m_pHelpMenu;

   QAction *m_pQuitAct;
   QAction *m_pAboutAct;
   ...
};

void ...::createActions()
{
    m_pQuitAct = new QAction(tr("&Quit"), this);
    m_pQuitAct->setShortcut(tr("Ctrl+Q"));
    m_pQuitAct->setStatusTip(tr("Quit the application"));
    connect( m_pQuitAct, SIGNAL(triggered()), this, SLOT(close()));

    m_pAboutAct = new QAction(tr("&About programm..."), this);
    m_pAboutAct->setStatusTip( tr("Show the application's About box"));
    connect( m_pAboutAct, SIGNAL(triggered()), this, SLOT(about()));
}

void ...::createMenus()
{
    m_pFileMenu = menuBar()->addMenu(tr("&File"));
    m_pFileMenu->addSeparator();
    m_pFileMenu->addAction( m_pQuitAct);

    m_pHelpMenu = menuBar()->addMenu(tr("&Help"));
    m_pHelpMenu->addAction( m_pAboutAct);
}
Подобный пример есть в папке Example Qt. :)

Автор: Litkevich Yuriy 11.2.2008, 12:28

я дизайнером пользуюсь в качестве шпаргалки, создаю например файл foo.ui в дизайнере, а потом командую в командной строке:

uic foo.ui -o foo.h

foo.h- файл С++, смотрю как делается интерисующий меня момент, посути то он в рантайме и делается, в конструкторе т.е.

Автор: ViGOur 11.2.2008, 15:41

Хе-хе, не знал, что так можно! :)

Автор: Don 29.4.2008, 18:10

А как этот дизайнер вобще запустить?

Автор: Litkevich Yuriy 29.4.2008, 18:21

в виндовозе:
если программой-установщиком пользовался, то в кнопке "Пуск"->Qt...->Designer
если из исходников собирал, то %QTDIR%\bin\designer.exe

Автор: AD 29.4.2008, 19:05

Если надо, могу тоже что-то подсказать (пример уже выложен, но если возникнут проблемы, обращайся).
Знаю как на-лету менять язык пунктов меню!!!

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)