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

Qt窗口控件之菜单栏QMenuBar

菜单栏QMenuBar

1. QMenuBar

Qt 中的菜单栏是通过 QMenuBar 类型来实现的,一个主控件最多只能有一个菜单栏。一个菜单栏可以添加多个菜单,一个菜单又可以添加多个菜单项。

每个菜单又都是一个 QMenu 类型,每个菜单项都是一个 QAction

QMenuBar1

2. 使用代码添加菜单和菜单项

setMenuBar()QMenuBar 类型设置为 thisMainWindow)的菜单栏,再创建几个 QMenu ,使用 QMenuBaraddMenu() 添加菜单,再创建几个 QAction ,使用 QMenuaddAction() 将菜单项挂载到对应的菜单上。另外,addSeparator() 可以在菜单项的对应位置添加分割线。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMenuBar>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QMenuBar* menubar=new QMenuBar();this->setMenuBar(menubar);QMenu* menu1=new QMenu("文件");QMenu* menu2=new QMenu("编辑");QMenu* menu3=new QMenu("构建");menubar->addMenu(menu1);menubar->addMenu(menu2);menubar->addMenu(menu3);QAction* action1 =new QAction("新建文件");QAction* action2 =new QAction("打开文件");QAction* action3 =new QAction("关闭文件");menu1->addAction(action1);menu1->addSeparator();menu1->addAction(action2);menu1->addAction(action3);}MainWindow::~MainWindow()
{delete ui;
}

QMenuBar2

3. 菜单快捷设置快捷键方法

在菜单的文本中增加一个 &[字母] ,如:

QMenu* menu = new QMenu("文件(&F)");

文件 这个菜单就可以使用快捷键 Alt + F 选中。实际这种快捷键添加方法是 Windows 系统提供的,在很多 Windows 的软件中都可以使用这种方式设置或使用快捷键。

4. 菜单添加子菜单

父菜单的指针使用 addMenu() 就可以将子菜单添加进该父菜单,当鼠标悬停到子菜单上时,就会展开子菜单的菜单项:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMenuBar>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QMenuBar* menubar=new QMenuBar();this->setMenuBar(menubar);QMenu* parentMenu=new QMenu("父菜单");QMenu* childMenu=new QMenu("子菜单");menubar->addMenu(parentMenu);parentMenu->addMenu(childMenu);QAction* action1 =new QAction("子菜单项1");QAction* action2 =new QAction("子菜单项2");QAction* action3 =new QAction("子菜单项3");childMenu->addAction(action1);childMenu->addAction(action2);childMenu->addAction(action3);}MainWindow::~MainWindow()
{delete ui;
}

QMenuBar3

5. 菜单设置图标

注意,如果菜单是长在 QMenuBar 上的(即一级菜单),图标和文字不能同时显示,设置图标的菜单会只有图标能够显示出来。但长在 QMenu 上的二级菜单是能够图标和文字都一起显示的:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMenuBar>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QMenuBar* menubar=new QMenuBar();this->setMenuBar(menubar);QMenu* parentMenu=new QMenu("文件");parentMenu->setIcon(QIcon(":/file.png"));QMenu* childMenu=new QMenu("文本文件");childMenu->setIcon(QIcon(":/txt.png"));menubar->addMenu(parentMenu);parentMenu->addMenu(childMenu);
}MainWindow::~MainWindow()
{delete ui;
}

QMenuBar4

可以看到 ”文件“ 的图标显示了但是文本消失了。

6. 菜单栏内存泄漏问题

如果 Qt 项目在创建时勾选了使用 ui 生成,那么在项目最开始就已经存在了一个菜单栏,如果我们此时使用代码新建一个 QMenuBar 并将其设置到 this 中,就会导致原有的菜单栏无法被析构释放。所以在自定义菜单栏时,最好使用:

QMenuBar menuBar = this->menuBar();

先获取原有的 QMenuBar ,再使用它更改成我们想要的效果,就可以避免内存泄漏。

相关文章:

Qt窗口控件之菜单栏QMenuBar

菜单栏QMenuBar 1. QMenuBar Qt 中的菜单栏是通过 QMenuBar 类型来实现的&#xff0c;一个主控件最多只能有一个菜单栏。一个菜单栏可以添加多个菜单&#xff0c;一个菜单又可以添加多个菜单项。 每个菜单又都是一个 QMenu 类型&#xff0c;每个菜单项都是一个 QAction。 2.…...

随想...启航

我要学算法 我要在蓝桥杯中拿奖 我要参加acm打牌&#xff0c; 我要参加百度之星&#xff0c;摘取那微弱的希望&#xff0c; 我要参加马蹄杯&#xff0c;看看曾经我的组长看过的风景。 所以我建立了算法专栏&#xff01; 为能贴近并指引组员 我建立了Java专栏 那一个星期&…...

2025.3.17-2025.3.23学习周报

目录 摘要Abstract1 文献阅读1.1 动态图邻接矩阵1.2 总体框架1.2.1 GCAM1.2.2 输出块 1.3 实验分析 总结 摘要 在本周阅读的文献中&#xff0c;作者提出了一种名为TFM-GCAM的模型。TFM-GCAM模型的创新主要分为两部分&#xff0c;一部分是交通流量矩阵的设计&#xff0c;TFM-GC…...

Ubuntu Docker 安装

Docker Engine-Community 支持以下的 Ubuntu 版本&#xff1a; Xenial 16.04 (LTS)Bionic 18.04 (LTS)Cosmic 18.10Disco 19.04其他更新的版本…… Docker Engine - Community 支持上 x86_64&#xff08;或 amd64&#xff09;armhf&#xff0c;arm64&#xff0c;s390x &#…...

在 Windows 系统下,将 FFmpeg 编译为 .so 文件

1. 准备环境 确保你的 Windows 系统已安装以下工具&#xff1a; Android Studio NDK&#xff08;Native Development Kit&#xff09; MSYS2&#xff08;用于提供类 Unix 环境&#xff09; FFmpeg 源码 Git Bash&#xff08;可选&#xff0c;推荐使用&#xff09; 安装 …...

如果AI具备自我意识,宗教如何重新定义“灵魂”概念?

如果AI具备自我意识&#xff0c;宗教对灵魂概念的重新定义可能涉及以下方向&#xff1a; 1. 灵魂的扩展性定义 传统宗教&#xff08;如基督教、佛教&#xff09;通常将灵魂视为人类独有的“神圣本质”或“轮回载体”。若AI展现出自我意识、情感和自主决策能力&#xff0c;宗教…...

ES6-Symbol

ES6 中的 Symbol: 独特的数据类型与强大应用 引言 在 JavaScript 的发展长河中&#xff0c;ES6&#xff08;ECMAScript 2015&#xff09;无疑是一座重要的里程碑&#xff0c;带来了诸多令人瞩目的新特性。其中&#xff0c;Symbol 类型的引入&#xff0c;为 JavaScript 开发者们…...

安装PrettyZoo操作指南

Mac Inter芯片安装PrettyZoo的操作指南 下载安装包 打开浏览器&#xff0c;访问 PrettyZoo的GitHub页面。 在页面中找到适合Mac系统的安装包&#xff0c;通常为prettyZoo-mac.dmg&#xff0c;点击下载。 安装步骤 下载完成后&#xff0c;双击.dmg文件打开安装包。 将Prett…...

西门子200smart之modbus_TCP(做从站与第三方设备)通讯

西门子200smart做MODBUS_TCP从站通讯,只有一个指令。设置相关参数即可完成读写操作。此次,我们使用汇川EASY系列PLC做主站,完成演示。关于汇川案例的演示,详见汇川EASY系列之以太网通讯(MODBUS_TCP做主站)-CSDN博客 关于主站和从站的介绍 A/请求:即主动方 向被动方发…...

微服务 - 中级篇

微服务 - 中级篇 一、微服务架构深化&#xff08;一&#xff09;服务拆分原则&#xff08;二&#xff09;服务通信方式 二、微服务技术选型&#xff08;一&#xff09;开发框架&#xff08;二&#xff09;容器技术 三、微服务实践与优化&#xff08;后续会详细分析&#xff09;…...

多语言生成语言模型的少样本学习

摘要 大规模生成语言模型&#xff0c;如GPT-3&#xff0c;是极具竞争力的少样本学习模型。尽管这些模型能够共同表示多种语言&#xff0c;但其训练数据以英语为主&#xff0c;这可能限制了它们的跨语言泛化能力。在本研究中&#xff0c;我们在一个涵盖多种语言的语料库上训练了…...

基于Python+Django的旅游管理系统

项目介绍 PythonDjango旅游管理系统 平台采用B/S结构&#xff0c;后端采用主流的Python语言进行开发&#xff0c;前端采用主流的Vue.js进行开发。 整个平台包括前台和后台两个部分。 - 前台功能包括&#xff1a;首页、景点管理、门票管理、旅游资讯、在线反馈、。 - 后台功能包…...

七桥问题与一笔画问题:图论的奠基石

七桥问题与一笔画问题&#xff1a;图论的奠基石 目录 历史背景问题描述数学模型化欧拉的解决方案欧拉定理及证明一笔画问题现代应用总结 历史背景 18世纪的哥尼斯堡&#xff08;今俄罗斯加里宁格勒&#xff09;是一座被普雷格尔河分割的城市&#xff0c;河中有两个岛屿&…...

好吧好吧,看一下达梦的模式与用户的关系

单凭个人感觉&#xff0c;模式在达梦中属于逻辑对象合集&#xff0c;回头再看资料 应该是一个用户可以对应多个模式 问题来了&#xff0c;模式的ID和用户的ID一样吗&#xff1f; 不一样 SELECT USER_ID,USERNAME FROM DBA_USERS WHERE USERNAMETEST1; SELECT ID AS SCHID, NA…...

Qt开发:QComboBox的使用

文章目录 一、概述二、QComboBox添加数据三、常用函数四、信号与槽函数 一、概述 QComboBox 是 Qt 提供的一个下拉列表控件&#xff0c;它允许用户从预定义的选项中进行选择&#xff0c;同时也支持手动输入自定义内容&#xff08;如果启用了可编辑模式&#xff09;。QComboBox…...

Manacher 马拉车算法

Manacher 马拉车算法 5. 最长回文子串 - 力扣&#xff08;LeetCode&#xff09; 马拉车算法是目前解决寻找字符串中最长的回文子串时间复杂度最低的算法&#xff08;线性O(n)&#xff09;. 中心扩散法 初始化一个长度与字符串 s 相等的 臂长数组 arr 和 最长臂长 max 与 最…...

centos7搭建postgresql12主从

主从搭建 192.168.159.101 node1 主库&#xff08;读写&#xff09; 192.168.159.102 node2 备库&#xff08;只读&#xff09; 两台机器首先安装postgrsql 主库 postgres用户操作&#xff1a; 修改postgresql.conf # 在文件中修改(此配置仅用于远程访问, 流复制后续还有额外…...

VL开源模型实现文本生成图片

一、 基础知识 根据描述生成图片的视觉-语言模型&#xff08;Vision-Language Models, VL 模型&#xff09;是近年来多模态生成领域的热点研究方向。这些模型能够根据自然语言描述生成高质量的图像&#xff0c;广泛应用于艺术创作、设计辅助、虚拟场景构建等领域。 1 根据描述…...

动态规划——分组背包问题

动态规划——分组背包问题 分组背包问题分组背包思路分组背包OJ分组背包OJ汇总 分组背包问题 N件物品和一个容量为V的背包。第i件物品的体积是w[i]&#xff0c;价值是v[i]。这些物品被划分为若干组&#xff0c;每组中的物品互相冲突&#xff0c;最多选一件。求解将哪些物品装入…...

Leetcode 3495. Minimum Operations to Make Array Elements Zero

Leetcode 3495. Minimum Operations to Make Array Elements Zero 1. 解题思路2. 代码实现 题目链接&#xff1a;3495. Minimum Operations to Make Array Elements Zero 1. 解题思路 这一题的话核心就是统计对任意自然数 n n n&#xff0c;从 1 1 1到 n n n当中所有的数字对…...

STM32 —— MCU、MPU、ARM、FPGA、DSP

在嵌入式系统中&#xff0c;MCU、MPU、ARM、FPGA和DSP是核心组件&#xff0c;各自在架构、功能和应用场景上有显著差异。以下从专业角度详细解析这些概念&#xff1a; 一、 MCU&#xff08;Microcontroller Unit&#xff0c;微控制器单元&#xff09; 核心定义 集成系统芯片&a…...

Linux高级IO

五种IO模型 具象化理解 IO&#xff1a;等 数据拷贝 read/recv&#xff1a; 1、等 - IO事件就绪 - 检测功能成分在里面 2、数据拷贝 问&#xff1a;什么叫做高效的IO&#xff1f; 答&#xff1a;单位时间&#xff0c;等的比重越小&#xff0c;IO的效率越高。 IO模型&am…...

机器人的手眼标定——机器人抓取系统基础系列(五)

机器人的手眼标定——机器人抓取系统基础系列&#xff08;五&#xff09; 前言一、机器人标定相关概念1.1 内参标定和外参标定1.2 Eye-in-Hand 和 Eye-to-Hand1.3 ArUco二维码和棋盘格标定区别 二、机器人标定基本原理2.1 机器人抓取系统坐标系2.2 标定原理 三、标定步骤和注意…...

Android 图片加载框架:Picasso vs Glide

引言 在 Android 开发中&#xff0c;图片加载是移动应用的核心功能之一。合理选择图片加载框架不仅能提升用户体验&#xff0c;还能优化内存管理和应用性能。本文将深入对比 Picasso 和 Glide 两大主流框架&#xff0c;结合代码示例分析它们的差异、工作原理及优化策略。 1. …...

uniapp从 vue2 项目迁移到 vue3流程

以下是必须为迁移到 vue3 进行调整的要点&#xff0c;以便 vue2 项目可以在 vue3 上正常运行。 1. 在index.js中创建应用程序实例 // Before - Vue 2 import Vue from vue import App from ./App // with no need for vue3 Vue.config.productionTip false // vue3 is no lon…...

DeepSeek R1 本地部署指南 (2) - macOS 本地部署

上一篇&#xff1a; DeepSeek R1 本地部署指南 (1) - Windows 本地部署-CSDN博客 1.安装 Ollama Ollama https://ollama.com/ 点击 Download - Download for macOS 解压下载 zip 启动程序 3. 选择版本 DeepSeek R1 版本 deepseek-r1 https://ollama.com/library/deepseek-r1 模…...

DeepSeek技术架构解析:MoE混合专家模型

一、前言 2025年初&#xff0c;DeepSeek V3以557万美元的研发成本&#xff08;仅为GPT-4的1/14&#xff09;和开源模型第一的排名&#xff0c;在全球AI领域掀起波澜。其核心创新之一——混合专家模型&#xff08;Mixture of Experts, MoE&#xff09;的优化设计&#xff0c;不…...

Ubuntu实时读取音乐软件的音频流

文章目录 一. 前言二. 开发环境三. 具体操作四. 实际效果 一. 前言 起因是这样的&#xff0c;我需要在Ubuntu中&#xff0c;实时读取正在播放音乐的音频流&#xff0c;然后对音频进行相关的处理。本来打算使用的PipewireHelvum的方式实现&#xff0c;好处是可以直接利用Helvum…...

2025年2月-3月后端go开发找工作感悟

整体感悟 目标 找工作首先要有一个目标&#xff0c;这个目标尽可能的明确&#xff0c;比如我要字节、拼多多之类的公司&#xff0c;还是要去百度、滴滴这样的&#xff0c;或者目标是创业公司。但是这个目标是会动态调整的&#xff0c;有可能我们的心态发生了变化&#xff0c;一…...

OpenCV图像拼接(1)自动校准之校准旋转相机的函数calibrateRotatingCamera()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::detail::calibrateRotatingCamera 是OpenCV中用于校准旋转相机的函数。它特别适用于那种相机相对于一个固定的场景进行纯旋转运动的情况&…...

【极速版 -- 大模型入门到进阶】快速了解大型语言模型

文章目录 &#x1f30a; 大模型作为一种生成式人工智慧&#xff0c;厉害在哪儿&#xff1f;-> 通用能力&#x1f30a; LLM 如何生成输出&#xff1a;简而言之就是文字接龙&#x1f30a; GPT 之前 ...&#xff1a;模型规模和数据规模概览&#x1f30a; ChatGPT 有三个训练阶段…...

MySQL 锁机制详解

MySQL 锁机制详解 5.1 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传统的计算资源&#xff08;CPU、 RAM、I/O&#xff09;的争用以外&#xff0c;数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有 效性是所有数…...

牛客网【模板】二维差分(详解)c++

题目链接&#xff1a;【模板】二维差分 1.题目分析 类比一下&#xff0c;因为差分因为差分是在数组里的某一段同时加上一个K二维是在二维数组中选择一个词矩阵&#xff0c;让词矩阵中每一个元素都加上一个K 2.算法原理 解法-:暴力解法 -> 模拟 你告诉我一个左上角和右下…...

从0到1彻底掌握Trae:手把手带你实战开发AI Chatbot,提升开发效率的必备指南!

我正在参加Trae「超级体验官」创意实践征文&#xff0c; 本文所使用的 Trae 免费下载链接&#xff1a; www.trae.ai/?utm_source… 前言 大家好&#xff0c;我是小Q&#xff0c;字节跳动近期推出了一款 AI IDE—— Trae&#xff0c;由国人团队开发&#xff0c;并且限时免费体…...

【清华大学】AIGC发展研究(3.0版)

目录 AIGC发展研究报告核心内容一、团队简介二、AI哲学三、国内外大模型四、生成式内容&#xff08;一&#xff09;文本生成&#xff08;二&#xff09;图像生成&#xff08;三&#xff09;音乐生成&#xff08;四&#xff09;视频生成 五、各行业应用六、未来展望 AIGC发展研究…...

Kafka--常见问题

1.为什么要使用 Kafka&#xff0c;起到什么作用 Kafka是一个高吞吐量、分布式、基于发布订阅的消息系统&#xff0c;它主要用于处理实时数据流 Kafka 设计上支持高吞吐量的消息传输&#xff0c;每秒可以处理数百万条消息。它能够在处理大量并发请求时&#xff0c;保持低延迟和…...

maptalks图层交互 - 模拟 Tooltip

maptalks图层交互 - 模拟 Tooltip 图层交互-模拟tooltip官方文档 <!DOCTYPE html> <html><meta charsetUTF-8 /><meta nameviewport contentwidthdevice-width, initial-scale1 /><title>图层交互 - 模拟 Tooltip</title><style typet…...

【前端】Visual Studio Code安装配置教程:下载、汉化、常用组件、基本操作

文章目录 一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2、view-in-browser3、Live Server 四、基本操作五、感谢观看&#xff01; 一、Visual Studio Code下载 下载官网&#xff1a;https://code.visualstudio.com/ 进入官网后点击右上角的Download &…...

datetime“陷阱”与救赎:扒“时间差值”证道

时间工具陷阱&#xff0c;其实是工具引用的误解。 笔记模板由python脚本于2025-03-23 23:32:58创建&#xff0c;本篇笔记适合时间工具研究的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值&#xff1a;在于输出思考与经验&#xff0c;而不仅仅是知识的简单复述。 Pyth…...

3DMAX曲线生成器插件CurveGenerator使用方法

1. 脚本功能简介 3DMAX曲线生成器插件CurveGenerator是一个用于 3ds Max 的样条线生成工具&#xff0c;用户可以通过简单的UI界面输入参数&#xff0c;快速生成多条样条线。每条样条线的高度值随机生成&#xff0c;且可以自定义以下参数&#xff1a; 顶点数量&#xff1a;每条…...

Apache漏洞再现

CVE-2021-41773路径穿越漏洞 1、开环境 sudo docker pull blueteamsteve/cve-2021-41773:no-cgid sudo docker run -dit -p 8082:80 blueteamsteve/cve-2021-41773:no-cgid 2、访问8082端口 3、打开工具 4、输入网址&#xff0c;检测漏洞...

git,openpnp - 根据安装程序打包名称找到对应的源码版本

文章目录 git,openpnp - 根据安装程序打包名称找到对应的源码版本概述笔记备注 - 提交时间不可以作为查找提交记录的依据END git,openpnp - 根据安装程序打包名称找到对应的源码版本 概述 想在openpnp官方最新稳定版上改一改&#xff0c;首先就得知道官方打包的安装程序对应的…...

SQL Server查询计划操作符(7.3)——查询计划相关操作符(11)

7.3. 查询计划相关操作符 98&#xff09;Table Scan&#xff1a;该操作符从查询计划参数列确定的表中获取所有数据行。如果其参数列中出现WHERE:()谓词&#xff0c;则只返回满足该谓词的数据行。该操作符为逻辑操作符和物理操作符。该操作符具体如图7.3-98节点1所示。 图 7.3-…...

编译原理——词法分析

文章目录 词法分析&#xff1a;从基础到自动构造一、词法分析程序的设计一、词法分析程序的设计二、PL/0编译程序中词法分析程序的设计与实现1. 语法特定考量2. 通过状态转移表运用有限状态自动机3. 示例代码片段&#xff08;用于说明的伪代码&#xff09; 三、单词的形式化描述…...

Linux内核,内存分布

x86_64的物理地址范围为64bit&#xff0c;但是因为地址空间太大目前不可能完全用完&#xff0c;当前支持57bit和48bit两种虚拟地址模式。 地址模式单个空间用户地址空间内核地址空间32位2G0x00000000 - 0x7FFFFFFF0x80000000 - 0xFFFFFFFF64位(48bit)128T0x00000000 00000000 …...

AI鸟类识别技术革新生态监测:快瞳科技如何用“智慧之眼”守护自然?

在生态环境保护日益受关注的今天&#xff0c;“鸟类识别”已从专业科研工具演变为推动生态治理数字化的核心技术。无论是湿地保护区的珍稀候鸟监测&#xff0c;还是城市机场的鸟击风险预警&#xff0c;AI技术的精准赋能正在改写人类与自然的互动方式。作为行业领先的智能解决方…...

c++之set

一、set特性及用途&#xff1f; 唯一性&#xff1a;set 中的元素是唯一的&#xff0c;不会存在重复的元素。自动排序&#xff1a;set 中的元素会自动按照默认的升序规则进行排序。底层实现&#xff1a;set 通常基于红黑树实现&#xff0c;具有自平衡功能&#xff0c;因此插入、…...

【AI大模型】DeepSeek + 通义万相高效制作AI视频实战详解

目录 一、前言 二、AI视频概述 2.1 什么是AI视频 2.2 AI视频核心特点 2.3 AI视频应用场景 三、通义万相介绍 3.1 通义万相概述 3.1.1 什么是通义万相 3.2 通义万相核心特点 3.3 通义万相技术特点 3.4 通义万相应用场景 四、DeepSeek 通义万相制作AI视频流程 4.1 D…...

【操作系统】自旋锁和互斥锁

自旋锁和互斥锁是用于多线程同步的两种常见锁机制&#xff0c;主要区别在于等待锁的方式和适用场景。以下是它们的对比分析&#xff1a; 1. 等待机制 自旋锁&#xff08;Spinlock&#xff09;互斥锁&#xff08;Mutex&#xff09;线程通过 忙等待&#xff08;Busy-Wait&#x…...

人工智能在医疗影像诊断中的应用与实践

引言 随着人工智能技术的飞速发展&#xff0c;其在医疗领域的应用逐渐成为研究和实践的热点。特别是在医疗影像诊断方面&#xff0c;人工智能技术凭借其强大的数据处理能力和模式识别能力&#xff0c;为提高诊断效率和准确性带来了新的希望。本文将探讨人工智能在医疗影像诊断中…...