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);

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章