设置菜单栏
利用之前学习的方法,在声明完菜单栏函数之后,在源文件中开始定义。
首先创建一个菜单栏以及菜单栏下的一个子项目
QMenu *menu1 = menuBar()->addMenu(tr("菜单1"));
QAction *sonact1 = new QAction(tr("子项目1"), this);
之后将子项目添加进菜单栏内
menu1->addAction(sonact1);
这里因为仅定义了一级菜单,所以子项目定义的是调用QAction函数而非目录的QMenu函数
//
如果想要设置二级菜单,这里提供了两种方法
第一种方法:
同时调用QMenu函数定义菜单以及一级子菜单,再调用QAction函数定义二级项目
QMenu *menu1 = menuBar()->addMenu(tr("菜单1")); //设置菜单1
QMenu *sonMenu1 = new QMenu(tr("子菜单1"), this); //设置子菜单1
menu1->addMenu(sonMenu1); //将子菜单1添加至菜单1中
QAction *grandsonact = new QAction(tr("二级子项目"), this); //设置孙子项目act
sonMenu1->addAction(grandsonact); //将孙子项目act添加至子菜单1中
grandsonact->setShortcuts(QKeySequence::New); //设置孙子项目act的快捷键
这里设置执行项目栏的快捷键
grandsonact->setShortcuts(QKeySequence::New);
这里默认的快捷键是Ctrl+N
如果想自己设置快捷键,设置模板grandsonact->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_N));
注意,该快捷键只允许QAcion产生的项目函数,而QMenu产生的目录函数无法调用此方法。
第二种方法:
同时生成一级子项目与二级子项目,只是在一级子项目中添加目录栏,并把二级子项目导入其中
QMenu *menu1 = menuBar()->addMenu(tr("菜单1")); //设置菜单1
QAction *sonact = new QAction(tr("子菜单1"), this); //设置子项目act
menu1->addAction(sonact); //将子项目act添加至菜单1中
sonact->setShortcuts(QKeySequence::New); //设置子项目act的快捷键
QAction *grandsonact = new QAction(tr("二级子项目"), this); //设置孙子项目act
QMenu *sonmenu = new QMenu(); //设置子菜单
sonmenu->addAction(grandsonact); //将孙子项目act添加至子菜单中
sonact->setMenu(sonmenu); //将子菜单添加至子项目act中
这段代码看久了感觉人会眼花,总而言之就是,设置一个菜单栏,在其中增加一个子项目,又要在子项目里产生一个二级项目,由于项目之间不可互相承接,所以我们又创建了一个子菜单,并且由子项目承接,再将二级项目载入子菜单中。
更通顺的来说,由于项目间不可承接,故要在项目中创建一个菜单作为“桥梁”承接两个项目。
我们可以具体优化菜单与项目栏,通过
sonact->setStatusTip(tr("子菜单"));
来在窗体左下角显示任务栏,并列出名称
注意,这里只能通过项目来调用任务栏,而目录窗口调用任务栏虽然VS2017不会报错,但是无法显示
同个菜单下的多个任务,我们可以在不同项目添加至目录中间添加分割线来分割不同项目
menu1->addSeparator();
设置工具栏
设置工具栏有两种方法
方法1:
通过qt自带的工具栏实现
QAction *bar1 = new QAction( tr("工具1"), this);
ui.mainToolBar->addAction(bar1);
方法2:
通过自建工具栏的方式,将工具项目添加至工具栏上
QToolBar *MyToolbar = new QToolBar(); //定义工具栏
addToolBar(MyToolbar); // 把工具栏添加到窗口
QPushButton *button1 = new QPushButton(); // 创建工具栏的按钮1
button1->setText(tr("工具1")); //命名
QAction *button2 = new QAction(); // 创建工具栏的按钮1
button2->setText(tr("工具2")); //命名
MyToolbar->addWidget(button1); //将按钮添加至工具栏
MyToolbar->addAction(button2); //将按钮添加至工具栏
这里分别创建了一个按钮和一个项目,效果如图:
自建项目栏默认时可以拖动的,我们可以通过添加代码
MyToolbar->setMovable(0);
将其设置为不可动。里面的0代表的是bool值false,若设成非零的数则变成true即可移动。