当前位置: 首页 > 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);

http://www.mrgr.cn/news/34929.html

相关文章:

  • 机器学习(贝叶斯算法,决策树)
  • Redisson的可重入锁
  • RabbitMQ 在 Linux CentOS 和 Docker 环境下的部署及分布式部署指南
  • 38配置管理工具(如Ansible、Puppet、Chef)
  • Openshift 如何更新访问控制机
  • Swagger enum 最佳实践:深度剖析与应用指南
  • Java--认识泛型(2)
  • vue3 数字滚动组件封装
  • 如何只用 CSS 制作网格?
  • 从理论到实践:业务能力建模在数字化转型中的落地实施路径
  • 二.python基础语法
  • SpringBoot使用hutool操作FTP
  • 软设每日打卡——在一个页式存储管理系统中,页表内容如下所示: 若页的大小为4KB,则地址转换机构将逻辑地址0转换成物理地址(块号在0开始计算)为
  • 开创远程就可以监测宠物健康新篇章
  • 降维技术内涵及使用代码
  • C++(学习)2024.9.23
  • IM项目------消息存储子服务
  • CSS05-Emment语法
  • 搭建EMQX MQTT服务器并接入Home Assistant和.NET程序
  • C++ Practical-1 day4
  • 【Qualcomm】高通SNPE框架简介、下载与使用
  • JUC并发编程_ReadWriteLock
  • 【机器学习】---元强化学习
  • 【Qualcomm】高通SNPE框架的使用 | 原始模型转换为量化的DLC文件 | 在Android的CPU端运行模型
  • 大数据-146 Apache Kudu 安装运行 Dockerfile 模拟集群 启动测试
  • @JsonFormat与@DateTimeFormat的区别