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解析和举例

 参数 : 父类, 文本备注,路径文本类型 ,过滤类型文本;

文件对话框效果图

 打印出文件路径

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/831972.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hive大数据任务调度和业务介绍

目录 一、Zookeeper 1.zookeeper介绍 2.数据模型 3.操作使用 4.运行机制 5.一致性 二、Dolphinscheduler 1.Dolphinscheduler介绍 架构 2.架构说明 该服务内主要包含: 该服务包含&#xff1a; 3.FinalShell主虚拟机启动服务 4.Web网页登录 5.使用 5-1 安全中心…

局域网唤醒平台:UpSnap

简介&#xff1a;UpSnap是一个简单的唤醒局域网网络应用程序。UpSnap为每个用户、每个设备提供了唯一的访问权限。虽然管理员拥有所有权限&#xff0c;但他们可以为用户分配特定的权限&#xff0c;如显示/隐藏设备、访问设备编辑、删除和打开/关闭设备电源。 历史攻略&#xf…

给Ollama套个WebUI,方便使用

Ollama 基本的安装使用参考前文 https://xugaoxiang.com/2024/05/01/ollama-offline-deploy/&#xff0c;前文使用的模型是 llama2&#xff0c;本篇将使用 llama3&#xff0c;因此在启动时&#xff0c;命令是 ollama run llama3。 Ollama Llama3 Llama3 是 Meta 发布的大语言模…

Optional学习记录

Optional出现的意义 在Java中&#xff0c;我们经常遇到的一种异常情况&#xff1a;空指针异常&#xff0c;在原本的编程中&#xff0c;为了避免这种异常&#xff0c;我们通常会向对象进行判断&#xff0c;然而&#xff0c;过多的判断语句会让我们的代码显得臃肿不堪。 所以在J…

用LangChain打造一个可以管理日程的智能助手

存储设计定义工具创建llm提示词模板创建Agent执行总结 众所周知&#xff0c;GPT可以认为是一个离线的软件的&#xff0c;对于一些实时性有要求的功能是完全不行&#xff0c;比如实时信息检索&#xff0c;再比如我们今天要实现个一个日程管理的功能&#xff0c;这个功能你纯依赖…

拼多多关键词怎么推广

拼多多上的关键词推广可以通过以下步骤进行&#xff1a; 拼多多推广可以使用3an推客。3an推客&#xff08;CPS模式&#xff09;给商家提供的营销工具&#xff0c;由商家自主设置佣金比例&#xff0c;激励推广者去帮助商家推广商品链接&#xff0c;按最终有效交易金额支付佣金…

定子的检查和包扎及转子的检查

线圈接好后 用摇表测试 线圈和外壳之间的绝缘性&#xff01; 测试通过后进行焊接&#xff01;&#xff0c;焊接的工具在后面的文章中会介绍&#xff01; 焊接好后&#xff0c;包绝缘管。 焊接完成后 进行星型连接&#xff0c;或者三角形连接&#xff01; 白扎带进行绑扎&…

室外巡检机器人——A2型高防护轮式巡检机器人

在科技日新月异的时代&#xff0c;室外巡检机器人犹如一位无畏的守护者&#xff0c;悄然出现在我们的视野之中。它迈着坚定的步伐&#xff0c;穿梭于各种复杂的室外环境&#xff0c;承担着重要的巡检任务。它是科技与智慧的结晶&#xff0c;是保障安全与稳定的前沿力量。让我们…

【Python基础】进程

文章目录 [toc]程序与进程的区别与联系同步任务示例 并行任务示例进程调度的“随机性” 进程属性与方法process_object.start()方法process_object.join()方法process_object.daemon属性没有设置守护进程的情况设置守护进程的情况 process_object.current_process()方法 进程通…

数仓开发:DIM层数据处理

一、了解DIM层 这个就是数仓开发的分层架构 我们现在是在DIM层&#xff0c;从ods表中数据进行加工处理&#xff0c;导入到dwd层&#xff0c;但是记住我们依然是在DIM层&#xff0c;而非是上面的ODS和DWD层。 二、处理维度表数据 ①先确认hive的配置 -- 开启动态分区方案 -- …

c++:优先级队列(priority queue)使用及底层详解,附带仿函数初步使用

文章目录 优先级队列的使用大堆小堆**注意** 优先级队列的模拟实现pushpopsizeemptytop 仿函数仿函数是什么pushpop 仿函数结合优先级队列的优势 优先级队列的使用 优先级队列本质是就是完全二叉树,是个堆.我们可以用优先级队列来取出一段序列中的前N个最大值. priority_queue…

Postman的一些使用技巧

Postman 是一个流行的 API 开发工具&#xff0c;用于设计、开发、测试、发布和监控 API。在现代web开发中使用非常广泛。后端开发必备而且必会的工具。 目录 1.配置环境变量 2.动态变量 3.脚本 4.测试 5.模拟 6.监控 7.集合运行器 8.响应保存 9.请求历史 10.同步请求…

【论文阅读笔记】关于“二进制函数相似性检测”的调研(Security 22)

个人博客链接 注&#xff1a;部分内容参考自GPT生成的内容 [Security 22] 关于”二进制函数相似性检测“的调研&#xff08;个人阅读笔记&#xff09; 论文&#xff1a;《How Machine Learning Is Solving the Binary Function Similarity Problem》&#xff08;Usenix Securi…

面试算法-链表-反转链表(golang、c++)

目录 1、题目 2、解题思路 2.1 遍历、迭代 2.2 递归 3、源代码 3.1 c 3.2 golang 4、复杂度分析 4.1 遍历、迭代法 4.2 迭代法 1、题目 链表是一种常用的数据结构&#xff0c;链表的特点是插入、删除节点的效率非常高&#xff0c;因为他不需要移动其他任何元素&…

Linux——守护进程化(独立于用户会话的进程)

目录 前言 一、进程组ID与会话ID 二、setsid() 创建新会话 三、daemon 守护进程 前言 在之前&#xff0c;我们学习过socket编程中的udp通信与tcp通信&#xff0c;但是当时我们服务器启动的时候&#xff0c;都是以前台进程的方式启动的&#xff0c;这样很不优雅&#xff0c…

数据分析:基于DESeq2的转录组功能富集分析

介绍 DESeq2常用于识别差异基因&#xff0c;它主要使用了标准化因子标准化数据&#xff0c;再根据广义线性模型判别组间差异&#xff08;组间残差是否显著判断&#xff09;。在获取差异基因结果后&#xff0c;我们可以进行下一步的富集分析&#xff0c;常用方法有基于在线网站…

银行智能化数据安全分类分级实践分享

文章目录 前言一、数据安全智能分类分级平台建设背景二、数据安全分类分级建设思路和实践1、做标签– 数据安全标签体系2、打标签– 鹰眼智能打标平台 3.03、用标签– 全行统一“数据安全打标签结果”服务提供前言 随着国家对数据安全的高度重视,以及相关法律法规的出台,数据…

python数据分析中数据可视化简单入门

1.折线图表 首先引入相关包pyecharts&#xff0c;如果没下载可以先下载 pip install pyecharts from pyecharts.charts import Lineline Line() # 添加x轴 line.add_xaxis([呱了个呱,羊村,牟多,蜂地,喵帕斯]) # 添加y轴 line.add_yaxis("GDP",[50,30,40,34,63,22])…

epoll的LT和ET模式介绍

目录 1.epoll的LT和ET模式介绍 2.epoll的ET模式如何处理 2.1 epoll的ET模式编程读取数据的处理方式 2.2 将描述符设置为非阻塞模式的方法 3.ET模式的总结 4.epoll的LT模式和ET模式总结 5.IO复用总结 1.epoll的LT和ET模式介绍 epoll对文件描述符有两种操作模式: LT(Leve…

Linux(openEuler、CentOS8)常用的IP修改方式(文本配置工具nmtui+配置文件+nmcli命令)

----本实验环境为openEuler系统<以server方式安装>&#xff08;CentOS类似&#xff0c;可参考本文&#xff09;---- 一、知识点 &#xff08;一&#xff09;文本配置工具nmtui(openEuler已预装) nmtui&#xff08;NetworkManager Text User Interface&#xff09;是一…