QT5之windowswidget_菜单栏+工具栏_核心控件_浮动窗口_模态对话框_标准对话框/文本对话框
菜单栏+工具栏
新建工程基类是QMainWindow
1、

2、

3、

点.pro文件,添加配置
因为之后用到lambda;
在.pro文件添加配置c++11
CONFIG +=c++11
#不能加分号
添加头文件
#include <QMenuBar>//菜单栏的头文件
主窗口代码mainwindow.cpp文件
#include "mainwindow.h"
#include <QMenuBar>//菜单栏的头文件
#include <QMenu>//菜单的头文件
#include <QAction>//动作头函数
#include <QDebug>//打印头文件
#include<QToolBar>//工具头文件,快捷图标工具
#include<QPushButton>//添加按钮MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{//菜单栏的文件菜单QMenuBar *mBar=menuBar();//生成一个菜单栏QMenu *pFile=mBar->addMenu("文件");//给菜单栏添加一个菜单名设置为文件;pFile就是指向这个文件菜单QAction *pnew= pFile->addAction("新建");//添加菜单项,pnew指向,新建菜单项 的动作返回值connect(pnew,&QAction::triggered,[=](){qDebug()<<"新建被按下";});pFile->addSeparator();//添加分割线QAction *popen =pFile->addAction("打开");//再添加一个菜单项,pFile是指向菜单名为文件//工具栏,菜单项的快捷方式;菜单栏下面的图标快捷工具QToolBar *toolBar =addToolBar("toolBar");//添加工具栏,菜单栏下面的可视化图标工具快捷键 toolBar指向菜单栏toolBar->addAction( pnew );//工具栏添加快捷键,添加了一个指向新建菜单项QPushButton *b=new QPushButton(this);//在工具栏添加一个按键b->setText("按键1");//添加小控件toolBar->addWidget(b);//添加控件为b按钮的控件connect(b,&QPushButton::clicked,[=]() //()里面可以添加信号的参数列表 clicked 发了个bool 型 那么{b->setText("123");//按一次就变名字});resize(500,500);}MainWindow::~MainWindow()
{}

结果示图
核心控件和浮动窗口和模态和非模态对话框代码
#include "mainwindow.h"
#include <QMenuBar>//菜单栏的头文件
#include <QMenu>//菜单的头文件
#include <QAction>//动作头函数
#include <QDebug>//打印头文件
#include<QToolBar>//工具头文件,快捷图标工具
#include<QPushButton>//添加按钮#include<QStatusBar>//状态栏的头文件
#include<QLabel>//标签头文件
#include<QTextEdit>//文本编辑器
#include<QDockWidget>//浮动窗口头文件#include<QDialog>//对话窗口MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{//菜单栏的文件菜单QMenuBar *mBar=menuBar();//生成一个菜单栏QMenu *pFile=mBar->addMenu("文件");//给菜单栏添加一个菜单名设置为文件;pFile就是指向这个文件菜单QAction *pnew= pFile->addAction("新建");//添加菜单项,pnew指向,新建菜单项 的动作返回值connect(pnew,&QAction::triggered,[=](){qDebug()<<"新建被按下";});pFile->addSeparator();//添加分割线QAction *popen =pFile->addAction("打开");//再添加一个菜单项,pFile是指向菜单名为文件//工具栏,菜单项的快捷方式;菜单栏下面的图标快捷工具QToolBar *toolBar =addToolBar("toolBar");//添加工具栏,菜单栏下面的可视化图标工具快捷键 toolBar指向菜单栏toolBar->addAction( pnew );//工具栏添加快捷键,添加了一个指向新建菜单项QPushButton *b=new QPushButton(this);//在工具栏添加一个按键b->setText("按键1");//添加小控件toolBar->addWidget(b);//添加控件为b按钮的控件connect(b,&QPushButton::clicked,[=]() //()里面可以添加信号的参数列表 clicked 发了个bool 型 那么{b->setText("123");//按一次就变名字});resize(500,500);//以下是状态栏*********************QStatusBar *sBar =statusBar();//QLabel *lable = new QLabel(this);//新建一个标签lable->setText("Normal text file");//给标签一个名字sBar->addWidget(lable);//状态栏 添加一个控件//默认从左往右边添加sBar->addWidget(new QLabel("2",this)); // 状态栏添加一个控件 ,控件为2 且控件父对象是这个窗口//状态栏 添加控件,从右边往左边添加sBar->addPermanentWidget(new QLabel("3",this));//核心控件*********************************QTextEdit *textEdit =new QTextEdit(this);//文本编辑器指定父对象为thissetCentralWidget(textEdit); //设计一个核心控件,为文本编辑器//浮动窗口QDockWidget *dock=new QDockWidget(this);//一个新的浮动窗口addDockWidget(Qt::RightDockWidgetArea,dock);//F1进去看填什么参数,点击参数枚举从中看到第一个参数例子//添加一个浮动窗口dock 放在右边//模态对话框,弹出的窗口,无法操作主窗口//非模态对话框,弹出的窗口,且可以操作主窗口;QMenu *menu =mBar->addMenu("对话框");QAction *p1= menu->addAction("模态对话框");connect(p1,QAction::triggered,[=](){QDialog dlg;//一个对话框dlg.show();//显示对话框dlg.exec();//因为这个一直不退出,主窗口也不执行qDebug()<<"1111";});QAction *p2= menu->addAction("非模态对话框");connect(p2,QAction::triggered,[=](){//QDialog dlg;//一个对话框 这个因为会被释放,所以改成主窗口的成员在.h文件增加//或者 动态申请 对话框 QDialog *p_dlg = new QDialog(this);//动态申请 不好 如果多次进入非模块组,内存只会整个程序结束才释放。内存越来越少// QDialog *p_dlg = new QDialog(this);// p_dlg->show();// p_dlg->setAttribute(Qt::WA_DeleteOnClose,true);//F1进入,第一参,关闭的时候释放//QDialog dlg;//一个对话框 这个因为会被释放,所以改成主窗口的成员在.h文件增加dlg.show();//显示对话框// dlg.exec();//非模态不能用这个,会阻塞qDebug()<<"1111";});}MainWindow::~MainWindow()
{}
标准对话框/文本对话框
需要包含头文件#include<QMessageBox>
选中这个头可以F1进入帮助文档找到如下


void about(QWidget * parent, const QString & title, const QString & text)
参1 父类 ,参2 标题 参3 内容文本
主代码
#include "mainwindow.h"
#include <QMenuBar>//菜单栏的头文件
#include <QMenu>//菜单的头文件
#include <QAction>//动作头函数
#include <QDebug>//打印头文件
#include<QToolBar>//工具头文件,快捷图标工具
#include<QPushButton>//添加按钮#include<QStatusBar>//状态栏的头文件
#include<QLabel>//标签头文件
#include<QTextEdit>//文本编辑器
#include<QDockWidget>//浮动窗口头文件#include<QDialog>//标准对话窗口头文件
#include<QFileDialog>//文件对话窗口头文件#include<QMessageBox>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{//菜单栏的文件菜单QMenuBar *mBar=menuBar();//生成一个菜单栏QMenu *pFile=mBar->addMenu("文件");//给菜单栏添加一个菜单名设置为文件;pFile就是指向这个文件菜单QAction *pnew= pFile->addAction("新建");//添加菜单项,pnew指向,新建菜单项 的动作返回值connect(pnew,&QAction::triggered,[=](){qDebug()<<"新建被按下";});pFile->addSeparator();//添加分割线QAction *popen =pFile->addAction("打开");//再添加一个菜单项,pFile是指向菜单名为文件//工具栏,菜单项的快捷方式;菜单栏下面的图标快捷工具QToolBar *toolBar =addToolBar("toolBar");//添加工具栏,菜单栏下面的可视化图标工具快捷键 toolBar指向菜单栏toolBar->addAction( pnew );//工具栏添加快捷键,添加了一个指向新建菜单项QPushButton *b=new QPushButton(this);//在工具栏添加一个按键b->setText("按键1");//添加小控件toolBar->addWidget(b);//添加控件为b按钮的控件connect(b,&QPushButton::clicked,[=]() //()里面可以添加信号的参数列表 clicked 发了个bool 型 那么{b->setText("123");//按一次就变名字});resize(500,500);//以下是状态栏*********************QStatusBar *sBar =statusBar();//QLabel *lable = new QLabel(this);//新建一个标签lable->setText("Normal text file");//给标签一个名字sBar->addWidget(lable);//状态栏 添加一个控件//默认从左往右边添加sBar->addWidget(new QLabel("2",this)); // 状态栏添加一个控件 ,控件为2 且控件父对象是这个窗口//状态栏 添加控件,从右边往左边添加sBar->addPermanentWidget(new QLabel("3",this));//核心控件*********************************QTextEdit *textEdit =new QTextEdit(this);//文本编辑器指定父对象为thissetCentralWidget(textEdit); //设计一个核心控件,为文本编辑器//浮动窗口QDockWidget *dock=new QDockWidget(this);//一个新的浮动窗口addDockWidget(Qt::RightDockWidgetArea,dock);//F1进去看填什么参数,点击参数枚举从中看到第一个参数例子//添加一个浮动窗口dock 放在右边//模态对话框,弹出的窗口,无法操作主窗口//非模态对话框,弹出的窗口,且可以操作主窗口;QMenu *menu =mBar->addMenu("对话框");QAction *p1= menu->addAction("模态对话框");connect(p1,QAction::triggered,[=](){QDialog dlg;//一个对话框dlg.show();//显示对话框dlg.exec();//因为这个一直不退出,主窗口也不执行qDebug()<<"1111";});QAction *p2= menu->addAction("非模态对话框");connect(p2,QAction::triggered,[=](){//QDialog dlg;//一个对话框 这个因为会被释放,所以改成主窗口的成员在.h文件增加//或者 动态申请 对话框 QDialog *p_dlg = new QDialog(this);//动态申请 不好 如果多次进入非模块组,内存只会整个程序结束才释放。内存越来越少// QDialog *p_dlg = new QDialog(this);// p_dlg->show();// p_dlg->setAttribute(Qt::WA_DeleteOnClose,true);//F1进入,第一参,关闭的时候释放//QDialog dlg;//一个对话框 这个因为会被释放,所以改成主窗口的成员在.h文件增加dlg.show();//显示对话框// dlg.exec();//非模态不能用这个,会阻塞qDebug()<<"1111";});//以下是文件对话框,和标准对话框***************//*************下面是标准对话框QAction *p3= menu->addAction("关于对话框");connect(p3,QAction::triggered,[=](){ //参 父类 标题 内容QMessageBox::about(this,"about","关于Qt");});QAction *p4= menu->addAction("问题对话框");connect(p4,QAction::triggered,[=](){int ret=QMessageBox::question(this,"question","are you OK?",//参 父类 标题 内容QMessageBox::Yes|QMessageBox::No);//指定对话框按钮,只能枚举内的switch (ret) {case QMessageBox::Yes:qDebug()<<"i am ok";break;case QMessageBox::No:qDebug()<<"i am bad";break;default:break;}});//*************以下是文件对话框 *********QAction *p5= menu->addAction("文件对话框");connect(p5,QAction::triggered,[=](){ //获取打开文件名称 参 父类 标题 内容//返回为字符串 ,文件路径QString str =QFileDialog::getOpenFileName(this,"open","../",//父类,文本备注,上一级路径"souce(*.cpp *.h);;Text(*.txt);;all(*.*)"//过滤选项);qDebug()<<str;});}MainWindow::~MainWindow()
{}
F1进入帮助文档,标准对话
QMessageBox::question(this,"question","are you OK?");使用F1进入帮助文档,
函数定义,有返回值

返回值枚举

标准对话框效果如下

F1 进入帮助文档文件对话

共有成员如下

QString getOpenFileName(QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0)
如下是getOpenFileName解析和举例

参数 : 父类, 文本备注,路径文本类型 ,过滤类型文本;
文件对话框效果图


打印出文件路径

相关文章:
QT5之windowswidget_菜单栏+工具栏_核心控件_浮动窗口_模态对话框_标准对话框/文本对话框
菜单栏工具栏 新建工程基类是QMainWindow 1、 2、 3、 点.pro文件,添加配置 因为之后用到lambda; 在.pro文件添加配置c11 CONFIG c11 #不能加分号 添加头文件 #include <QMenuBar>//菜单栏的头文件 主窗口代码mainwindow.cpp文件 #include &q…...
Satellite, Aerial, and Underwater Communication Track(WCSP2023)
1.Dispersion Curve Extraction and Source Localization for Single Hydrophone by Combining Image Skeleton Extraction with Advanced Time-Frequency Analysis(图像骨架提取与先进时频分析相结合的单水听器色散曲线提取和源定位) 摘要:时频分析(TF…...
AtCoder Regular Contest 176(ARC176)A、B
题目:AtCoder Regular Contest 176 - tasks 官方题解:AtCoder Regular Contest 176 - editorial 参考:atcoder regular 176 (ARC176) A、B题解 A - 01 Matrix Again 题意 给一个nn的方格,给出m个坐标(x,y)m,在方格中…...
VTK —— 二、教程六 - 为模型加入3D微件(按下i键隐藏或显示)(附完整源码)
代码效果 本代码编译运行均在如下链接文章生成的库执行成功,若无VTK库则请先参考如下链接编译vtk源码: VTK —— 一、Windows10下编译VTK源码,并用Vs2017代码测试(附编译流程、附编译好的库、vtk测试源码) 教程描述 本…...
一种基于图搜索的全局/局部路径避障策略
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言一种基于图搜索的全局/局部路径避障策略前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对一种基于图搜索…...
LT2611UX四端口 LVDS转 HDMI2.0,带音频
描述LT2611UX 是一款面向机顶盒、DVD 应用的高性能 LVDS 至 HDMI2.0 转换器。LVDS输入可配置为单端口、双端口或四端口,具有1个高速时钟通道和3~4个高速数据通道,工作速率最高为1.2Gbps/通道,可支持高达19.2Gbps的总带宽。LT2611UX 支持灵活的…...
TypeError报错处理
哈喽,大家好,我是木头左! 一、Python中的TypeError简介 这个错误通常表示在方法调用时,参数类型不正确,或者在对字符串进行格式化操作时,提供的变量与预期不符。 二、错误的源头:字符串格式化…...
PHP的数组练习实验
实 验 目 的 掌握索引和关联数组,以及下标和元素概念; 掌握数组创建、初始化,以及元素添加、删除、修改操作; 掌握foreach作用、语法、执行过程和使用; 能应用数组输出表格和数据。 任务1:使用一维索引数…...
P3743 小鸟的设备
原题链接:小鸟的设备 - 洛谷 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 浮点数二分答案。 首先特判,如果接通设备每秒生成的能量p大于等于所有设备每秒消耗的能量(a[1]a[2]..a[n])直接输出-1&…...
数字旅游以科技创新为动力:推动旅游服务的智能化、网络化和个性化发展,满足游客日益增长的多元化、个性化需求
目录 一、引言 二、科技创新推动旅游服务智能化发展 1、智能化技术的引入与应用 2、智能化提升旅游服务效率与质量 三、科技创新推动旅游服务网络化发展 1、网络化平台的构建与运营 2、网络化拓宽旅游服务渠道与范围 四、科技创新推动旅游服务个性化发展 1、个性化需求…...
64位的IP地址设想
现有的IP地址 IPv4有32位,不够用了。 IPv6有128位,相当多。 实际上,23385亿,只要在IPv4的基础上,加1比特就够用了,IPv6有些太长了。 64位的IP地址 这是个设想。 64位分成七段,8888881664&…...
1.python爬虫爬取视频网站的视频可下载的源url
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、爬取的源网站二、实现代码总结 一、爬取的源网站 http://www.lzizy9.com/ 在这里以电影片栏下的动作片为例来爬取。 可以看到视频有多页,因此需要…...
Linux目录结构
目录结构必背 !!!!(在生产环境中必须知道自己在哪个目录下)...
电脑问题2【彻底删除CompatTelRunner】
彻底删除CompatTelRunner 电脑偶尔会运行CompatTelRunner造成CPU占用的资源非常大,所以这里要想办法彻底关闭他 本文摘录于:https://mwell.tech/archives/539只是做学习备份之用,绝无抄袭之意,有疑惑请联系本人! 解决办法是进入W…...
【算法】【贪心算法】【leetcode】870. 优势洗牌
题目地址:https://leetcode.cn/problems/advantage-shuffle/description/ 题目描述: 给定两个长度相等的数组 nums1 和 nums2,nums1 相对于 nums2 的优势可以用满足 nums1[i] > nums2[i] 的索引 i 的数目来描述。 返回 nums1 的任意排列&…...
Unity AVProVideo安卓播放视频问题
打包ARM64,插件里arm64里的几个库都设置arm64,平台选择安卓 Unity VideoPlayer使用url方式,Android平台下无法播放http链接的视频 主要原因:默认情况下,不允许从Android 8开始使用不安全的HTTP,并且必须使用HTTPS,除非分配了自定义的明文安全策略 解决办法: 只需要修…...
Redis使用手册之字符串
《Redis使用手册字符串设置》 目录 **《Redis使用手册字符串设置》**** SET:为字符串键设置值**** GETSET:获取旧值并设置新值**** MSET:一次为多个字符串键设置值**MGET:一次获取多个字符串键的值**** MSETNX:只在键不…...
嵌入式Linux学习第二天
今天学习linuxC编程。首先要熟悉linux下编写c程序的过程。 编写程序Hello World! 首先创建存放程序的文件夹,如下图所示: 接下来在创建一个文件夹来保存这节要编写的代码。指令:mkdir 3.1 接下来我们要设置VIM编辑器的一些配置࿰…...
【intro】图卷积神经网络(GCN)
本文为Graph Neural Networks(GNN)学习笔记-CSDN博客后续,内容为GCN论文阅读,相关博客阅读,kaggle上相关的数据集/文章/代码的阅读三部分,考虑到本人是GNN新手,会先从相关博客开始,进一步看kaggleÿ…...
【Web】CTFSHOW 新手杯 题解
目录 easy_eval 剪刀石头布 baby_pickle repairman easy_eval 用script标签来绕过 剪刀石头布 需要赢100轮🤔 右键查看源码拿到提示 一眼session反序列化 打PHP_SESSION_UPLOAD_PROGRESS 脚本 import requestsp1 a|O:4:"Game":1:{s:3:"log…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...
高防服务器价格高原因分析
高防服务器的价格较高,主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因: 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器,因此…...
针对药品仓库的效期管理问题,如何利用WMS系统“破局”
案例: 某医药分销企业,主要经营各类药品的批发与零售。由于药品的特殊性,效期管理至关重要,但该企业一直面临效期问题的困扰。在未使用WMS系统之前,其药品入库、存储、出库等环节的效期管理主要依赖人工记录与检查。库…...
Canal环境搭建并实现和ES数据同步
作者:田超凡 日期:2025年6月7日 Canal安装,启动端口11111、8082: 安装canal-deployer服务端: https://github.com/alibaba/canal/releases/1.1.7/canal.deployer-1.1.7.tar.gz cd /opt/homebrew/etc mkdir canal…...
