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

Qt 窗口以及菜单栏介绍

一、Qt 窗口

Qt 中的窗口类 QMainWindow 是继承于 QWidget 类,提供菜单栏,工具栏,子窗口,中央控件和状态栏的布局。

这就是创建的窗口 ui 界面,自动创建了菜单栏和状态栏(之后会有问题)

二、菜单栏 QMenuBar

1、结构

菜单栏一个窗口只有一个。

菜单项 QAction -> 菜单 QMenu -> 菜单栏 QMenuBar

2、菜单栏相关 api

(1)代码

(2)api

窗口设置菜单栏:this->setMenuBar(QMenuBar&);

菜单栏添加菜单:QMenuBar::addMenu(QMenu&);

菜单添加菜单项:QMenu::addAction(QAction&);

菜单添加子菜单:QMenu::addMenu(QMenu&);

菜单项之间添加分割线:QMenu::addSeparator();

菜单项设置图片:QAction::setIcon(QIcon&);

(3)子菜单

(4)菜单和菜单项设置快捷键

就是在创建的时候文本带上 &字符 就能自动识别快捷键:alt + 字符

(5)菜单项之间分割线

(6)菜单项添加图片

3、菜单栏内存泄漏问题

之前我们提到如果勾选了自动创建 ui 界面那么一开始就会创建好菜单栏和状态栏。

但是一直像上面代码一样直接再创建一个菜单栏,并设置进窗口,那就会把旧的菜单栏从对象树中挤下去,导致在释放的时候只是放了一个菜单栏,此时就有内存泄漏问题。

解决:QMenuBar* menuBar = this->QMenuBar();

这样如果原先没有菜单栏就直接创建,如果有直接获取 this 的,不会出现两个菜单栏。

http://www.dtcms.com/a/73253.html

相关文章:

  • 谷歌搜索基本规则
  • 算法014——找到字符串中所有字母异位词
  • C++|构造函数和析构函数
  • 基于PHP的网店进销存管理系统(源码+lw+部署文档+讲解),源码可白嫖!
  • 练习-依依的询问最小值(前缀和差分)
  • C语言之链表
  • NocoBase 本周更新汇总:双因素身份认证(2FA)
  • HTML 字符集
  • Kubernetes的组成和架构
  • 一个简单的 **猜数字游戏** 的 C 语言例程
  • Java 用循环嵌套语句生成*三角形阵列
  • Vue3组件+leaflet,实现重叠marker的Popup切换显示
  • 51单片机的工作过程
  • Vue-Router:构建单页面应用的路由管理利器
  • 向量数据库技术系列四-FAISS介绍
  • three.js解决非全屏射线位置错误问题
  • 第三章:大模型中的提示学习
  • 蓝桥杯备考:图论之Prim算法
  • 2.3 滑动窗口专题:最大连续1的个数 III(LeetCode 1004)
  • PostgreSQL技术大讲堂 - 第82讲,主题:数据安全利器--密码安全策略构建
  • SpringBoot 和vue前后端配合开发网页拼图10关游戏源码技术分享
  • c++图论(一)之图论的起源和图的概念
  • 易语言模拟真人鼠标轨迹算法
  • 2025年渗透测试面试题总结-某四字大厂实习面试复盘 一面 三面(题目+回答)
  • Amazon Quantum Ledger Database (QLDB):革新数据可信记录的终极解决方案
  • (C语言)写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和(递归函数)
  • Axure设计之下拉多选框制作教程B(中继器)
  • 【Aioredis实战总结】Aioredis简介
  • 详解Flutter单线程模型,以及Flutter是如何通过单线程实现异步的
  • Go语言os标准库