当前位置: 首页 > news >正文

14. Qt 程序菜单实现,基于QMainWindow

目录

前言:

技能:

内容:

一、ui中直接添加控件实现

二、 完全通过代码实现菜单

参考:


前言:

基于QMainWindow,两种方式实现菜单:通过直接添加ui控件快速添加菜单和完全通过代码实现菜单,前者极为快速方便,后者更能练习技能

展示效果:


技能:

菜单栏的三个成分QMenuBar、QMenu、QAction使用

内容:

两种方式都是基于QMainWindow,所以创建工程的时候需要选择基类QMainWindow

在Qt中,菜单的各个部分名称如下图

上面照片来自参考链接,讲的很好,可以直接点参考链接去看哦


法一、ui中直接添加控件实现

如果是基于QMainWindow,直接点开ui文件,上面已经提供了QMenuBar

直接双击修改名称就可以

重要的是,一定要回车保存才行,根据上面介绍,这个叫QMenu

当前QMenu回车后会出来这个样子,或者单机一个QMenu也是

这里继续就可以添加QAction

 

但是在这里无法直接输入中文,上面的QMenu是可以的

解决方法是:先输入一个英文名称创造出来一个QAction,点下面的信号编辑器中双击“文本”,这里编辑名称就可以正常输入中文

 

 

在这里编辑功能很多,比如图标和快捷方式,快捷方式设置是从键盘读取按键,可以组合。详细内容看参考链接 

点击QAction旁边的小图标可以创建进一步的QAction,方法同理

创建完界面后要实现槽函数,在Qt creator中可以直接右键Action编辑器中的QAction,有熟悉的“转到槽”,后面的内容就和之前一样了。如果是用的VS2022联机的Qt designer或者不想用直接转到槽,可以看我之前的文章->在VS2022中使用QT

法二、 完全通过代码实现菜单

首先在头文件中在Qt类中添加私有成员,这里是两个QMenu,两个QAction

#include<QMenu>
#include<QMenuBar>
#include<QAction>
#include<QFileDialog>private:QMenu *pMenuFile;QMenu *pMenuEdit;QAction *pActNew;QAction *pActOpen;

在QMainWindow的构造函数里面,创建、添加合并,也差不多看得懂。详情看参考链接讲得好

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);pMenuFile= new QMenu("文件(&File)");//快捷键ALT+F   &后字母表示快捷键pMenuEdit= new QMenu("编辑(&Edit)");//快捷键ALT+Eui->menubar->addMenu( pMenuFile);ui->menubar->addMenu( pMenuEdit);pActNew=new QAction("新建");pActNew->setShortcut(Qt::CTRL|Qt::Key_N);pActOpen=new QAction("打开");pActOpen->setShortcut(Qt::CTRL|Qt::Key_O);pMenuFile->addAction(pActNew);pMenuFile->addAction(pActOpen);//下面是手动连接槽函数的//connect(pActOpen,SIGNAL(triggered(bool)),this,SLOT(OpenClicked()));//connect(pActNew,SIGNAL(triggered(bool)),this,SLOT(NewClicked()));}

 

参考:

【Qt学习系列】14.Qt程序菜单

【Qt学习系列】14_Qt程序菜单(2)

【Qt学习系列】14.Qt程序菜单(3)这个是实现右键菜单的,欢迎大家学习

http://www.lryc.cn/news/302270.html

相关文章:

  • 如何利用SpringSecurity进行认证与授权
  • 如何简单上手清华AutoGPT并搭建到本地环境
  • 【漏洞复现-通达OA】通达OA share存在前台SQL注入漏洞
  • HTML5 Canvas与JavaScript携手绘制动态星空背景
  • 如何优雅地与ChatGPT对话?
  • AI提示工程实战:从零开始利用提示工程学习应用大语言模型【文末送书-19】
  • 量子算法入门——3.狄拉克符号与量子态(3)
  • c++ STL系列——(三)list
  • 软考29-上午题-排序
  • 【详细流程】vue+Element UI项目中使用echarts绘制圆环图 折线图 饼图 柱状图
  • Unity之XR Interaction Toolkit如何在VR中实现一个可以拖拽的UI
  • 开源项目热度榜单
  • Ubuntu系统搭建HadSky论坛并结合内网穿透实现无公网ip远程访问
  • gowin GW1N4 LED
  • Linux ipvlan详解(l2、l3、l3s和bridge、private和vepa模式)
  • 理解并实现OpenCV中的图像平滑技术
  • ChatGPT高效提问—prompt实践(白领助手)
  • Code Composer Studio (CCS) - Comment (注释)
  • springboot/ssm校园菜鸟驿站管理系统Java校园快递取件管理系统
  • 【Mybatis】TypeHandler使用
  • [计算机网络]---网络编程套接字
  • 分布式文件系统 SpringBoot+FastDFS+Vue.js【二】
  • 开源软件:推动软件行业繁荣的力量
  • [杂记]mmdetection3.x中的数据流与基本流程详解(数据集读取, 数据增强, 训练)
  • 阿里云香港轻量应用服务器怎么样,建站速度快吗?
  • 事务及在SpringBoot项目中使用的两种方式
  • stm32--笔记
  • 2024前端面试准备之CSS篇(二)
  • 轨道交通信号增强与覆盖解决方案——经济高效,灵活应用于各类轨道交通场景!
  • 学习数据接构和算法的第10天