Я могу в 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>
Но вот возникла необходимости еще в диначмическом добавлении пунктов меню, а как это сделать ума не приложу.
Так:
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.
я дизайнером пользуюсь в качестве шпаргалки, создаю например файл foo.ui в дизайнере, а потом командую в командной строке:
uic foo.ui -o foo.h
Хе-хе, не знал, что так можно!
А как этот дизайнер вобще запустить?
в виндовозе:
если программой-установщиком пользовался, то в кнопке "Пуск"->Qt...->Designer
если из исходников собирал, то %QTDIR%\bin\designer.exe
Если надо, могу тоже что-то подсказать (пример уже выложен, но если возникнут проблемы, обращайся).
Знаю как на-лету менять язык пунктов меню!!!
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)