版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010468553/article/details/79664064
只有在继承了
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);
其效果图见下图: