【QT】自我学习笔记第三章——菜单与工具栏

本文记录了在QT中如何设置菜单栏和工具栏。对于菜单栏,介绍了如何创建一级菜单和二级菜单的两种方法,包括快捷键设置。在工具栏方面,讲解了使用内置工具栏和自建工具栏的方式,并展示了如何固定自建工具栏的位置。
摘要由CSDN通过智能技术生成

设置菜单栏

利用之前学习的方法,在声明完菜单栏函数之后,在源文件中开始定义。
首先创建一个菜单栏以及菜单栏下的一个子项目

	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即可移动。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值