只有在繼承了
QMainWindow
的窗體,纔會有this->menuBar()->addMenu();
以及this->addToolBar()
函數。
Qmune
QMune
與QMenuBar
之間的關係見下面的代碼。
//方法1:
QMenu *menu= menuBar()->addMenu(tr("&file"));//QMainWindow中的menuBar函數返回創建好的menuBar的指針,可分解爲如下兩行
//方法2:
QMenuBar *mymenubar=menuBar();
QMenu *mune =mymenubar->addMenu("file");
在聲明Qmune
之前需要先聲明幾個QAction
,QAction
用來抽象的表示一個動作,它包括行爲、屬性等參數:
//創建打開文件動作
fileOpenAction = new QAction(QIcon(tr("images/open.ico")), tr("Open File"), this);
//設置打開文件動作的快捷鍵
fileOpenAction->setShortcut(tr("Ctrl + O"));
//設置打開文件動作的提示信息
fileOpenAction->setStatusTip(tr("open the file"));
//關聯打開文件動作的信號和槽
connect(fileOpenAction, SIGNAL(triggered()), this, SLOT(fileOpenActionSlot()));
然後將QAction
添加到Qmune
中:
void ZWindow::createMenu()
{
menu = this->menuBar()->addMenu(tr("file"));
menu->addAction(fileOpenAction);
menu->addAction(lutFileOpenAction);
menu->addAction(fileSaveAction);
menu = this->menuBar()->addMenu(tr("shader"));
menu->addAction(vertfileChangeAction);
menu->addAction(fragfileChangeAction);
menu = this->menuBar()->addMenu(tr("Effect"));
menu->addAction(EffecChangeAction1);
menu->addAction(EffecChangeAction2);
menu->addAction(EffecChangeAction3);
menu->addAction(EffecChangeAction4);
menu->addAction(EffecChangeAction5);
}
上段代碼創建的Mune見下圖:
QToolBar
和QMune
不同,QToolBar
出現的地方在菜單欄的下面,其初始化以及添加動作的代碼見下圖:
toolbar = this->addToolBar(tr("file"));
toolbar->addAction(fileOpenAction);
toolbar->addAction(lutFileOpenAction);
toolbar->addAction(fileSaveAction);
toolbar= this->addToolBar(tr("shader"));
toolbar->addAction(vertfileChangeAction);
toolbar->addAction(fragfileChangeAction);
toolbar= this->addToolBar(tr("Effect"));
toolbar->addAction(EffecChangeAction1);
toolbar->addAction(EffecChangeAction2);
toolbar->addAction(EffecChangeAction3);
toolbar->addAction(EffecChangeAction4);
toolbar->addAction(EffecChangeAction5);
其效果圖見下圖: