1. 程式人生 > >Qt入門 工具欄QToolBar和選單欄QMenuBar(六)

Qt入門 工具欄QToolBar和選單欄QMenuBar(六)

只有在繼承了QMainWindow的窗體,才會有this->menuBar()->addMenu();以及this->addToolBar()函式。

Qmune

QMuneQMenuBar之間的關係見下面的程式碼。

//方法1:
QMenu *menu= menuBar()->addMenu(tr("&file"));//QMainWindow中的menuBar函式返回建立好的menuBar的指標,可分解為如下兩行  
//方法2:
QMenuBar *mymenubar=menuBar();  
QMenu *mune =mymenubar->
addMenu("file");

在宣告Qmune之前需要先宣告幾個QActionQAction用來抽象的表示一個動作,它包括行為、屬性等引數:

//建立開啟檔案動作  
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);

其效果圖見下圖:
這裡寫圖片描述