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…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
9-Oracle 23 ai Vector Search 特性 知识准备
很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...
