<4>, Qt窗口

article/2025/6/21 1:15:07

目录

一,菜单栏

二,工具栏

三,状态栏

四,浮动窗口

五,对话框


一,菜单栏

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 创建菜单栏QMenuBar* menuBar = new QMenuBar(this);this->setMenuBar(menuBar);// 创建菜单QMenu* menu1 = new QMenu("文件(&F)");QMenu* menu2 = new QMenu("编辑(&E)");QMenu* menu3 = new QMenu("视图(&V)");menuBar->addMenu(menu1);menuBar->addMenu(menu2);menuBar->addMenu(menu3);// 子菜单QMenu* menuParent = new QMenu("父菜单");QMenu* menuChild = new QMenu("子菜单");menuBar->addMenu(menuParent);menuParent->addMenu(menuChild);// 分割线menuBar->addSeparator();// 创建菜单项QAction* action1 = new QAction("新建");QAction* action2 = new QAction("打开");QAction* action3 = new QAction("保存");QAction* action4 = new QAction("另存为");QAction* action5 = new QAction("退出");menu1->addAction(action1);menu1->addAction(action2);menu1->addAction(action3);menu1->addAction(action4);menu1->addAction(action5);// 给action添加信号connect(action1,&QAction::triggered,this,&MainWindow::handle1);connect(action2,&QAction::triggered,this,&MainWindow::handle2);connect(action3,&QAction::triggered,this,&MainWindow::handle3);connect(action4,&QAction::triggered,this,&MainWindow::handle4);connect(action5,&QAction::triggered,this,&MainWindow::close);
}

二,工具栏

    // 菜单项放到工具栏QToolBar* toolbar1 = new QToolBar();QToolBar* toolbar2 = new QToolBar();toolBar->addAction(action1);toolBar->addAction(action2);// 只能放左侧或者右侧toolbar2->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);// 不能浮动toolbar2->setFloatable(false);// 不能移动toolbar2->setMovable(false);

三,状态栏

    // 创建状态栏QStatusBar* statusBar = this->statusBar();this->setStatusBar(statusBar);// 显示临时消息//statusBar->showMessage("这是一个状态消息", 3000);// 给状态栏中添加子控件QLabel* label = new QLabel("这是一个QLabel");statusBar->addWidget(label);// 给状态栏添加进度条QProgressBar* progressBar = new QProgressBar();progressBar->setRange(0,100);progressBar->setValue(50);statusBar->addWidget(progressBar);// 给状态栏设置按钮QPushButton* button = new QPushButton("按钮");statusBar->addPermanentWidget(button);

四,浮动窗口

    // 给主窗口加子窗口QDockWidget* dockWidget = new QDockWidget();this->addDockWidget(Qt::LeftDockWidgetArea,dockWidget);// 浮动窗口也可以设置标题dockWidget->setWindowTitle("这是浮动窗口");// 给浮动窗口内部添加控件QWidget* container = new QWidget();dockWidget->setWidget(container);// 创建布局管理器,把布局管理器设置到QWidget中QVBoxLayout* layout = new QVBoxLayout;container->setLayout(layout);// 创建其他控件添加到layout中QLabel* label2 = new QLabel("这是个按钮");QPushButton* buttuon = new QPushButton("这是按钮");layout->addWidget(label);layout->addWidget(button);// 设置浮动窗口允许停靠的位置dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::TopDockWidgetArea);

五,对话框

void QDialog::on_pushButton_clicked()
{QDialog* dialog = new QDialog(this);dialog->setWindowTitle("这是一个对话框");// 设置对话框的尺寸dialog->resize(600,600);// 通过 show 方法就可以显示对话框dialog->show();// delete dialog;// 正确做法应该是把 delete 和关闭按钮的点击信号关联起来// 在用户去点击关闭的时候,触发 delete// Qt 为了让咱们写的方便,直接给 QDialog 设置了一个属性// 可以通过设置属性,完成上述效果dialog->setAttribute(Qt::WA_DeleteOnClose);
}

http://www.hkcw.cn/article/gVsyhMYaEW.shtml

相关文章

多目标粒子群优化算法(MOPSO),用于解决无人机三维路径规划问题,Matlab代码实现

多目标粒子群优化算法(MOPSO),用于解决无人机三维路径规划问题,Matlab代码实现 目录 多目标粒子群优化算法(MOPSO),用于解决无人机三维路径规划问题,Matlab代码实现效果一览基本介绍…

具有离散序列建模的统一多模态大语言模型【AnyGPT】

第1章 Instruction 在人工智能领域、多模态只语言模型的发展正迎来新的篇章。传统的大型语言模型(LLM)在理解和生成人类语言方面展现出了卓越的能力,但这些能力通常局限于 文本处理。然而,现实世界是一个本质上多模态的环境,生物体通过视觉、…

嵌入式学习笔记 - STM32 HAL库以及标准库内核以及外设头文件区别问题

一 CMSIS内核驱动文件夹 标准库中CMSIS内核驱动文件夹中,仅包含两个.h文件,其中stm32f10x.h 为stm10系列底层文件如总线以及各片上外设模块寄存器地址,system_stm32f10x.h为系统底层配置文件,主要为时钟配置。 HAL库中CMSIS内核驱…

LeetCode 算 法 实 战 - - - 移 除 链 表 元 素、反 转 链 表

LeetCode 算 法 实 战 - - - 移 除 链 表 元 素、反 转 链 表 第 一 题 - - - 移 除 链 表 元 素方 法 一 - - - 原 地 删 除方 法 二 - - - 双 指 针方 法 三 - - - 尾 插 第 二 题 - - - 反 转 链 表方 法 一 - - - 迭 代方 法 二 - - - 采 用 头 插 创 建 新 链 表 总 结 &a…

Ros真(node?package?)

Ros中 都是靠一个个节点相互配合的 如同APP之间的配合 然后节点不好单独存在, 我们一般把他们放在一个包里 也就是Package。 也可以自己设立一个包 如图这种 ———————————— 建立包 流程 : —————— 我们弄好之后 在VSCODE SRC右键 …

电路图识图基础知识-常用仪表识图及接线(九)

一、 直流电流表的使用和接线 用来测量直流电流的仪表,我们称为直流电流表,下图所示为直流电流表。 直流电流表有两种接入方式:直接接入法、间接接入法。下图所示为直流电流表接线方 法 。 4.1.2 交流电流表的使用和接线 交流电流表也是一种…

分享两款使用免费软件,dll修复工具及DirectX修复工具

装软件老是弹窗报错?两个小工具解决系统运行库问题 安装软件时弹出DLL缺失?别急,这里有办法 安装软件的时候,突然跳出个弹窗,提示缺少什么“MSVCP140.dll”或者“VCRUNTIME140.dll”,完全不懂。这种情况并…

L56.【LeetCode题解】 电话号码的字母组合

目录 1.17. 电话号码的字母组合 2.分析 举例 枚举算法:使用递归(dfs) 递推 回归 特殊情况的考虑 代码 提交结果 事后回顾: 递归调用的部分展开图 1.17. 电话号码的字母组合 https://leetcode.cn/problems/letter-combinations-of-a-phone-number/ 给定一个仅包含数字…

基础补充(扩展方法/协变/访问修饰/接口)

文章目录 项目地址一、扩展方法(Extension Methods)1.1 创建扩展方法1.2 案例 二、访问修饰符2.1 顶级类2.2 类中成员(字段、属性、方法) 项目地址 教程作者:教程地址: 代码仓库地址: 所用到的…

MySQL 事务解析

1. 事务简介 事务(Transaction) 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 经典案例&#xff1…

【Qt】Bug:findChildren找不到控件

使用正确的父对象调用 findChildren:不要在布局对象上调用 findChildren,而应该在布局所在的窗口或控件上调用。

Protos-SIP:经典 SIP 协议模糊测试工具!全参数详细教程!Kali Linux教程!

简介 该测试套件的目的是评估会话发起协议 (SIP) 实现的实现级别安全性和稳健性。 Protos-SIP 是一款专为 SIP 协议模糊测试(Fuzzing)设计的工具,最初由 OUSPG(Oulu University Secure Programming Group)开发&#…

springMVC-9数据格式化

数据格式化 学习目标: 理解在我们提交数据(比如表单时),SpringMVC怎样对提交的数据进行转换和处理的 Spring MVC 上下文中内建了很多转换器,可完成大多数 Java 类型的转换工作。 基本数据类型可以和字符串之间自动完成转换 应用实例-页面…

【多线程初阶】死锁的产生 如何避免死锁

文章目录 关于死锁一.死锁的三种情况1.一个线程,一把锁,连续多次加锁2.两个线程,两把锁3.N个线程,M把锁 --哲学家就餐问题 二.如何避免死锁死锁是如何构成的(四个必要条件)打破死锁 三.死锁小结 关于死锁 一.死锁的三种情况 1.一个线程,一把锁,连续多次加锁 -->由synchroni…

第3节 Node.js 创建第一个应用

Node.js 非常强大,只需动手写几行代码就可以构建出整个HTTP服务器。事实上,我们的Web应用以及对应的Web服务器基本上是一样的。 在我们创建Node.js第一个"Hello, World!"应用前,让我们先了解下Node.js应用是由哪几部分组成的&…

余承东:ADS 4今年Q4实现高速L3商用,展望2026年L4

2025(第三届)未来汽车先行者大会于5月31日至6月1日在深圳国际会展中心(宝安)举行,华为常务董事、终端BG董事长余承东在会上发表了演讲。余承东在演讲中提到ADS的进展和展望。他表示,尊界S800首发搭载了ADS 4,并预计从2025年第三季度开始,尊界S800等车型将升级到ADS 4。…

Redis实战-基于redis和lua脚本实现分布式锁以及Redission源码解析【万字长文】

前言: 在上篇博客中,我们探讨了单机模式下如何通过悲观锁(synchronized)实现"一人一单"功能。然而,在分布式系统或集群环境下,单纯依赖JVM级别的锁机制会出现线程并发安全问题,因为这…

【本周开启】Springer |第七届区块链、人工智能和可信系统国际会议(BlockSys‘2025)

Springer |第七届区块链、人工智能和可信系统国际会议(BlockSys2025) International Conference on Blockchain, Artificial Intelligence, and Trustworthy Systems 中国 珠海 2025年05月30日-2025年05月31日 大会官网:BlockSys2025 – Int…

PCIE硬件管脚顺序问题解决方案

当你的硬件设计的管脚顺序不对,或者tx/rx的顺序搞反了,您发现你在自己工程的XDC中对管脚进行分配,布线通不过,或者布过去了,上位机不能识别,这个是由于综合工具默认是就近原则,使用自定义生成的…

生成https 证书步骤

一、OpenSSL下载 OpenSSL下载地址: https://slproweb.com/products/Win32OpenSSL.html 如果电脑是64位的就选择64位的 二、OpenSSL安装 双击打开.exe文件 开始安装,一直下一步,不过需要注意的是默认安装路径是C盘,可更改到其他盘…