Qt6.5示例:QMainWindow集成QMenuBar菜单栏

欢迎关注公众号(20YC编程),有免费C++视频课程哦!


-今日内容-

1 QMenuBar简介

QMenuBar是Qt框架中的一个菜单栏类,它提供了一个可以包含一个或多个QAction对象或级联的QMenu对象的菜单栏。

QMenuBar通常被放置在主窗口的标题栏下方,用于显示菜单。通过使用QMenuBar和QMenu类,可以创建和管理菜单,包括一级菜单和二级菜单。

2 如何使用QMenuBar

头文件:#include <QMenuBar>

cmake:find_package(Qt6 REQUIRED COMPONENTS Widgets)

              target_link_libraries(mytarget PRIVATE Qt6::Widgets)

qmake:QT += widgets

继承于:QWidget

3 示例说明

本示例演示了如何在QMainWindow主界面插入一个QMenuBar菜单栏控件。

同时还演示了如何退出QApplication应用程序,和QFileDialog文件对话框基本用法。

在这个例子中,我们首先创建一个名为IMainWindow的类,该类继承于QMainWindow。在IMainWindow的构造函数中,我们创建一个QMenuBar实例,并向其添加二个菜单项,同时添加不同Action动作。其中菜单项"打开(&O)"会打开一个文件对话框。

然后,我们使用setMenuBar()方法将菜单栏添加到主窗口。

最后,我们在main()函数中创建一个QApplication实例,并显示我们的窗口。当用户选择"退出(&X)"选项时,程序将退出。

4 示例执行效果

5 示例代码

  • imainwindow.h:

#ifndef IMAINWINDOW_H
#define IMAINWINDOW_H#include <QMainWindow>
#include <QMenuBar>class IMainWindow : public QMainWindow
{Q_OBJECTpublic:IMainWindow(QWidget *parent = nullptr);~IMainWindow();private slots:void slotMenuOpen();private:QMenuBar *m_pMenuBar{nullptr};};
#endif // IMAINWINDOW_H
  • imainwindow.cpp:

#include "imainwindow.h"
#include <QApplication>
#include <QStyle>
#include <QFileDialog>IMainWindow::IMainWindow(QWidget *parent): QMainWindow(parent)
{// 设置标题和调整大小this->setWindowTitle("欢迎关注公众号(20YC编程)");this->resize(680, 320);// 创建菜单栏m_pMenuBar = new QMenuBar(this);/******** 创建菜单和动作 ********/// 文件菜单QMenu *p_file_menu = m_pMenuBar->addMenu("文件(&F)");p_file_menu->addAction(QIcon(QApplication::style()->standardIcon(QStyle::SP_DirOpenIcon)), "打开(&O)", this, &IMainWindow::slotMenuOpen);p_file_menu->addAction("新建(&N)");p_file_menu->addAction("保存(&S)");p_file_menu->addSeparator();p_file_menu->addAction("退出(&X)", qApp, &QApplication::quit);// 编辑菜单QMenu *p_edit_menu = m_pMenuBar->addMenu("编辑(&E)");p_edit_menu->addAction("复制");p_edit_menu->addAction("全选");// 将菜单樯添加到窗口this->setMenuBar(m_pMenuBar);
}IMainWindow::~IMainWindow()
{
}// 槽函数
void IMainWindow::slotMenuOpen()
{QFileDialog::getOpenFileName(this, "打开文件");
}
  • main.cpp:

#include "imainwindow.h"
#include <QApplition>int main(int argc, char *argv[])
{  QApplication a(argc, argv);  IMainWindow w;  w.show();  return a.exec();  
}

-【End】-

喜欢本文章,记得点赞、分享、关注哦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/590445.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

消息队列LiteQueue

文章目录 一、简介二、设计2.1 队列结构设计2.2 队列接口设计 三、实现3.1 队列锁的实现3.2 创建队列3.3 写入队列3.4 读出数据3.5 判断队列是否为空3.6 判断队列是否为满3.7 清空队列3.8 删除队列 四、测试参考 一、简介 收到消息时先把接收到的消息放到队列中。在任务中从队…

63页!嵩山版Java开发手册分享

作为广受欢迎的编程语言之一&#xff0c;Java在软件开发领域扮演着重要的角色。然而&#xff0c;由于Java的灵活性和广泛应用&#xff0c;很容易出现代码质量低下、可读性差、维护困难等问题。为了解决这些问题&#xff0c;阿里巴巴集团发布了一份权威指南——阿里嵩山版Java开…

redis数据库高可用应用场景-配置哨兵

一&#xff0c;redis数据库哨兵的使用场景 Redis哨兵机制通常在需要高可用性的 Redis 环境中使用&#xff0c;如果是普通的项目&#xff0c;只是用来做缓存的可以忽略。 适用场景&#xff1a; 高可用性需求&#xff1a;当需要确保 Redis 服务的高可用性并且防止单点故障时&…

【2023年第十三届APMCM亚太地区大学生数学建模竞赛】A题 水果采摘机器人的图像识别 35页论文及python代码

【2023年第十三届APMCM亚太地区大学生数学建模竞赛】A题 水果采摘机器人的图像识别 1 题目 水果采摘机器人的图像识别 中国是世界上最大的苹果生产国&#xff0c;年产量约为3500万吨。与此同时&#xff0c;中国也是世界上最大的苹果出口国&#xff0c;世界上每两个苹果中就有…

iToF人脸识别

iToF(间接飞行时间)是一种测量光飞行时间的技术,主要应用于人脸识别。 iToF人脸识别技术在哪些场景下会用到 iToF人脸识别技术可以应用于许多场景,以下是一些常见的应用场景: 平安城市:在城市监控系统中,iToF人脸识别技术可以用于实时监控、目标检测和识别,以及异常行为…

iostat获取IO延迟单位从ms调整us的方案

iostat命令统计的磁盘I/O延迟通常是以毫秒&#xff08;ms&#xff09;为单位&#xff0c;例如在输出中的await字段表示的是平均服务时间&#xff0c;包括等待时间和处理时间&#xff0c;这个值就是以毫秒为单位。 然而&#xff0c;要获取更精确到微秒级别&#xff08;us&#x…

Python爬虫---使用BeautifulSoup下载麦当劳点餐图片

步骤&#xff1a; 1. 导入需要使用的包 2. 定位正确的url地址 3. 发请求 4. 获取响应 5. 解析响应的内容 6. 将获取的xpath语法转换成bs4语法 7.下载图片 import urllib.request from bs4 import BeautifulSoup# url url "https://www.mcdonalds.com.cn/index/Fo…

WEB 3D技术 three.js通过光线投射 完成几何体与外界的事件交互

本文 我们来说 光线投射 光线投射技术是用于3维空间场景中的交互事件 我们先编写代码如下 import ./style.css import * as THREE from "three"; import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";const scene new THRE…

恢复BlackBit袭击:探寻BlackBit病毒的特性与防范和恢复方法

导言&#xff1a; 随着数字时代的到来&#xff0c;我们在网络世界中分享、存储和传输大量敏感数据&#xff0c;然而&#xff0c;网络犯罪分子也在不断进化&#xff0c;采取更为狡猾的方式威胁我们的数字资产。其中&#xff0c;BlackBit勒索病毒作为一种具有高度威胁性的勒索软…

添加 Android App Links

添加 Android App Links功能 介绍一个简单的效果Android配置Add Url intent filtersAdd logic to handle the intentAssociate website 搭建网页支持AppLinks 介绍 Android App Links 是指将用户直接转到 Android 应用内特定内容的 HTTP 网址。Android App Links 可为您的应用带…

机械过滤器(石英砂过滤器)和多介质过滤器的区别 工作原理动画

​ 1&#xff1a;机械过滤器多介质石英砂过滤器介绍 机械过滤器&#xff1a;预处理水质的关键设备 机械过滤器&#xff0c;也被称为压力式过滤器&#xff0c;是纯水制备过程中不可或缺的预处理设备。它在水处理系统中扮演着重要的角色&#xff0c;能够有效地去除水中的悬浮物…

《Python机器学习原理与算法实现》学习笔记

以下为《Python机器学习原理与算法实现》&#xff08;杨维忠 张甜 著 2023年2月新书 清华大学出版社&#xff09;的学习笔记。 根据输入数据是否具有“响应变量”信息&#xff0c;机器学习被分为“监督式学习”和“非监督式学习”。 “监督式学习”即输入数据中即有X变量&…

Linux服务器搭建笔记-006:拓展/home目录容量

一、问题说明 Ubuntu服务器在使用过程中创建的新用户&#xff0c;每位用户会在/home目录下生成一个属于其个人的主文件夹。如果不限制各个用户的使用空间&#xff0c;所有的用户都会共用/home所挂载的硬盘。在这种多用户情况下&#xff0c;会很快的填满/home目录&#xff0c;导…

uniapp 添加自定义图标

1. 下载自定义图标 在阿里图标库&#xff0c;选择喜欢的图标库 https://www.iconfont.cn/collections/index 建议按收藏数排序进行&#xff0c;能更快找到合适的图标 点开喜欢的图标库&#xff08;如 Ant Design 官方图标库&#xff09;&#xff0c;将喜欢的图标添加到图标收集…

仿网易云音乐网站PHP源码,可运营的原创音乐分享平台源码,在线音乐库系统

源码介绍 使用PHP和MYSQL开发的原创音乐分享平台源码&#xff0c;仿网易云音乐网站。用户可以在网站上注册并上传自己的音乐作品&#xff0c;系统内置广告系统&#xff0c;为网站创造收入来源。 安装教程 1.导入sql.sql 2.修改 includes\config.php 数据库信息和网址都改成…

linux常用shell脚本

查看系统当前进程连接数 netstat -an | grep ESTABLISHED | wc -l 如何在/usr目录下找出大小超过10MB的文件? find /usr -type f -size 10240k 添加一条到192.168.3.0/24的路由&#xff0c;网关为192.168.1.254&#xff1f; route add -net 192.168.3.0/24 netmask 255.2…

github 修改hosts DNS解析

第一步 打开在线dns解析 github.com http://www.ip33.com/dns.html 修改hosts window下 首先找到域名文件&#xff0c;一般在 C:\Windows\System32\drivers\etc 下&#xff0c;然后打开 hosts 文件&#xff0c;在里面增加一条 域名解析记录&#xff0c;修改成功后刷新DNS解析…

B2005 字符三角形(python)

a input() print( a) print( a a a) print(a a a a a)python中默认输入的是字符型&#xff0c;第一句就是输入了一个字符赋给a python中单引号内的也是字符串&#xff0c;用print输出需要连接的字符串时用加号加在后面即可

数据结构:基于数组的环形队列(循环队列)实现

1 前言 队列是一种先进先出的线性表&#xff0c;简称为FIFO。它只允许在队尾插入成员&#xff0c;在队头删除成员&#xff0c;就像现实生活中排队上车一样。 队列的实现可以通过链表或数组完成&#xff0c;一般来说都推荐使用链表来实现队列&#xff0c;使用数组实现队列时每次…

Casper Network 推出 “DevRewards” 计划:允许所有开发者赚取激励

Casper Association 是一个致力于推动区块链大规模采用的非营利组织&#xff0c;该组织在 Casper Network 系统中推出了一个被称为 “DevRewards ” 的奖励计划&#xff0c;旨在邀请开发者提交能够解决现有问题的创新技术方案&#xff0c;以帮助 Casper Network 系统进一步完善…