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…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...
