当前位置: 首页 > news >正文

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.lryc.cn/news/341664.html

相关文章:

  • Satellite, Aerial, and Underwater Communication Track(WCSP2023)
  • AtCoder Regular Contest 176(ARC176)A、B
  • VTK —— 二、教程六 - 为模型加入3D微件(按下i键隐藏或显示)(附完整源码)
  • 一种基于图搜索的全局/局部路径避障策略
  • LT2611UX四端口 LVDS转 HDMI2.0,带音频
  • TypeError报错处理
  • PHP的数组练习实验
  • P3743 小鸟的设备
  • 数字旅游以科技创新为动力:推动旅游服务的智能化、网络化和个性化发展,满足游客日益增长的多元化、个性化需求
  • 64位的IP地址设想
  • 1.python爬虫爬取视频网站的视频可下载的源url
  • Linux目录结构
  • 电脑问题2【彻底删除CompatTelRunner】
  • 【算法】【贪心算法】【leetcode】870. 优势洗牌
  • Unity AVProVideo安卓播放视频问题
  • Redis使用手册之字符串
  • 嵌入式Linux学习第二天
  • 【intro】图卷积神经网络(GCN)
  • 【Web】CTFSHOW 新手杯 题解
  • react 学习笔记二:ref、状态、继承
  • [SaaS]建筑领域的sd应用
  • 气象数据nc数据矢量化处理解析及可视化
  • APP广告变现,开发者对接百度广告联盟,广告变现收益如何?
  • spring Ai框架整合Ollama,调用本地大模型
  • 八股spring+springboot+springMVC+Mybatis(一)
  • (六)SQL系列练习题(下)#CDA学习打卡
  • python数据处理(pandas)
  • 微信小程序开发秘籍:玩转麦克风录音与音频上传【代码示例】
  • spring的核心详解
  • 一、写给Android开发者之harmony入门