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

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.kler.cn/a/589300.html

相关文章:

  • embedding技术
  • Cascadeur 技术浅析(五):碰撞避免算法
  • 【python web】一文掌握 Flask 的基础用法
  • 黑龙江有多线IDC服务器托管机房吗?
  • 输入:0.5元/百万tokens(缓存命中)或2元(未命中) 输出:8元/百万tokens
  • vulhub/log4j2漏洞靶场----反弹shell
  • 【图片批量转换合并PDF】多个文件夹的图片以文件夹为单位批量合并成一个PDF,基于wpf的实现方案
  • Python爬虫:playwright的使用
  • python爬虫笔记(一)
  • 【MATLAB例程】AOA(到达角度)法,多个目标定位算法,三维空间、锚点数量自适应(附完整代码)
  • 01-1 音视频知识学习(音频)
  • QT入门笔记2
  • MySQL的基本使用
  • vue 识别word表格中的图片
  • 纳米压印原理,仪器以及在AR眼镜中的应用
  • 鸿蒙的 Stage 模型
  • Spring(5)——IoC DI
  • 学习路之TP6 --重写vendor目录下的文件(服务覆盖command---优点:命令前后一致)
  • PentestGPT 下载
  • 在ArcGIS中对图斑进行自上而下从左往右编号