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

9_23_QT窗口

窗口

  • 菜单栏(QMenuBar)
    • 代码生成菜单项、设置菜单项快捷键
    • QAddSeparator 添加分割线和添加图标 setIcon
    • QMenuBar

菜单栏(QMenuBar)

代码生成菜单项、设置菜单项快捷键

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//创建菜单栏QMenuBar* menubar = new QMenuBar();this->setMenuBar(menubar);//创建菜单、设置快捷键QMenu* menu1 = new QMenu("文件(&W)");QMenu* menu2 = new QMenu("视图(&B)");QMenu* menu3 = new QMenu("帮助(&C)");QMenu* menu4 = new QMenu("开始(&D)");menubar->addMenu(menu1);menubar->addMenu(menu2);menubar->addMenu(menu3);menubar->addMenu(menu4);//创建菜单项、设置快捷键QAction* action1 = new QAction("打开(&e)");QAction* action2 = new QAction("存储(&f)");QAction* action3 = new QAction("设置(&g)");QAction* action4 = new QAction("更改(&H)");QAction* action5 = new QAction("退出(&Q)");menu1->addAction(action1);menu1->addAction(action2);menu1->addAction(action3);menu1->addAction(action4);menu1->addAction(action5);connect(action1, &QAction::triggered, this, &MainWindow::handle);connect(action5, &QAction::triggered, this, &MainWindow::close);}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::handle()
{qDebug() << "打开";
}

QAddSeparator 添加分割线和添加图标 setIcon

• 在两个菜单项之间田间分割线,可以使用 addSeparator()
• 给某个菜单项添加图标,可以使用 setIcon(QIcon())

//创建菜单项QAction* action1 = new QAction("打开(&e)");//给action1添加图片action1->setIcon(QIcon(":/open.png"));QAction* action2 = new QAction("存储(&f)");QAction* action3 = new QAction("设置(&g)");QAction* action4 = new QAction("更改(&H)");QAction* action5 = new QAction("退出(&Q)");menu1->addAction(action1);//给action1和action2 中间添加图片menu1->addSeparator();menu1->addAction(action2);menu1->addAction(action3);menu1->addAction(action4);menu1->addAction(action5);connect(action1, &QAction::triggered, this, &MainWindow::handle);connect(action5, &QAction::triggered, this, &MainWindow::close);

QMenuBar

• 如果没有关闭自动生成ui文件,那么ui.可能就会自动生成一个QMenuBar,这个时候如果我们用代码再生成一个QMenuBar,就会导致前一个QMenuBar被挤出对象树,这个时候如果频繁切换页面就会导致内存泄漏。

	解决方法就是用代码创建QMenuBar之前,先判断QMenuBar是否存在,如果他存在,就获取他的值,再返回,如果不存在,就直接创建一个,然后返回。
//创建菜单栏//QMenuBar* menubar = new QMenuBar();QMenuBar* menubar = this->menuBar();    this->setMenuBar(menubar);

相关文章:

  • 【C/C++】【基础数论】33、算数基本定理
  • 选择租用徐州存储服务器有什么作用?
  • 数据库系列(1)常见的四种非关系型数据库(NoSQL)
  • 前端Vue学习笔记02
  • go的结构体、方法、接口
  • 【1分钟学会】实用的Git工作流程
  • 初学51单片机之I2C总线与E2PROM
  • 追随 HarmonyOS NEXT,Solon v3.0 将在10月8日发布
  • 基于饥饿游戏搜索优化随机森林的数据回归预测 MATLAB 程序 HGS-RF
  • Could not find com.mapbox.mapboxsdk:mapbox-android-accounts:0.7.0.解决
  • STM32G431RBT6(蓝桥杯)串口(发送)
  • RTX NVIDIA 3090卡配置对应pytorch,CUDA版本,NVIDIA驱动过程及问题整理
  • MATLAB基本语句
  • 【最基础最直观的排序 —— 冒泡排序算法】
  • 基础漏洞——SSRF
  • 【Leetcode】101. 对称二叉树
  • 分享一款快速APP功能测试工具
  • C++入门教程(10):for 语句
  • Create React App 使用
  • css布局,左右固定中间自适应实现
  • Git同步原始仓库到Fork仓库中
  • HomeBrew常规使用教程
  • javascript 哈希表
  • javascript面向对象之创建对象
  • mysql innodb 索引使用指南
  • scrapy学习之路4(itemloder的使用)
  • uni-app项目数字滚动
  • ⭐ Unity + OpenCV 实现实时图像识别与叠加效果
  • 安装python包到指定虚拟环境
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 大整数乘法-表格法
  • 服务器之间,相同帐号,实现免密钥登录
  • 看域名解析域名安全对SEO的影响
  • 如何编写一个可升级的智能合约
  • 删除表内多余的重复数据
  • 学习JavaScript数据结构与算法 — 树
  • 主流的CSS水平和垂直居中技术大全
  • 《天龙八部3D》Unity技术方案揭秘
  • 通过调用文摘列表API获取文摘
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • # 数论-逆元
  • #Datawhale AI夏令营第4期#AIGC文生图方向复盘
  • #include到底该写在哪
  • (zhuan) 一些RL的文献(及笔记)
  • (二)JAVA使用POI操作excel
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (十三)Maven插件解析运行机制
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)http协议
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转载)利用webkit抓取动态网页和链接
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .md即markdown文件的基本常用编写语法