QT 基本对话框

包括:

1.标准文件对话框

 

 dialog.h

#ifndef DIALOG_H
#define DIALOG_H#include <QDialog>
#include <QTextCodec>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QGridLayout>
#include <QFrame>
#include "inputdlg.h"
#include "msgboxdlg.h"
class Dialog : public QDialog
{Q_OBJECTpublic:Dialog(QWidget *parent = nullptr);~Dialog();
private://标准文件对话框实例QPushButton *btnfile;QLineEdit *linefile;QGridLayout *mainLayout;//标准颜色对话框QPushButton *btncolor;QFrame *framecolor;//标准字体对话框QPushButton *btnfont;QLineEdit *linefont;//标准输入对话框QPushButton *btninput;InputDlg *Dlginput;//标准消息对话框QPushButton  *btnMsg;MsgBoxDlg   *Dlgmsg;//自定义消息对话框QPushButton  *btnCustom;QLabel   *label;private slots:void  showFile();void  showColor();void  showFont();void  showInputDlg();void  showMsgDlg();void  showCustomDlg();};
#endif // DIALOG_H

dialog.cpp

#include "dialog.h"
#include <QString>
#include <QFileDialog>
#include <QColorDialog>
#include <QFontDialog>
#include <QDebug>
#include <QMessageBox>
Dialog::Dialog(QWidget *parent): QDialog(parent)
{setWindowTitle(QStringLiteral("各种标准对话框的实例"));
//标准文件对话框实例btnfile=new QPushButton;btnfile->setText(QStringLiteral("文件标准对话框"));linefile=new QLineEdit;//标准颜色对话框btncolor=new QPushButton;btncolor->setText(QStringLiteral("颜色标准对话框"));framecolor=new QFrame;framecolor->setFrameShape(QFrame::Box);framecolor->setAutoFillBackground(true);//标准字体对话框btnfont=new QPushButton;btnfont->setText(QStringLiteral("字体标准对话框"));linefont=new QLineEdit;linefont->setText(QStringLiteral("Welcome"));//标准输入对话框btninput=new QPushButton;btninput->setText(QStringLiteral("输入标准对话框"));//标准消息对话框btnMsg=new QPushButton;btnMsg->setText(QStringLiteral("输入消息对话框"));//自定义消息对话框btnCustom=new QPushButton;btnCustom->setText(QStringLiteral("用户自定义消息对话框"));label=new QLabel;label->setFrameStyle(QFrame::Panel|QFrame::Sunken);//布局mainLayout =new  QGridLayout(this);mainLayout->addWidget(btnfile,0,0);mainLayout->addWidget(linefile,0,1);mainLayout->addWidget(btncolor,1,0);mainLayout->addWidget(framecolor,1,1);mainLayout->addWidget(btnfont,2,0);mainLayout->addWidget(linefont,2,1);mainLayout->addWidget(btninput,3,0);mainLayout->addWidget(btnMsg,3,1);mainLayout->addWidget(btnCustom,4,0);mainLayout->addWidget(label,4,1);//添加信号与槽connect(btnfile,SIGNAL(clicked()),this,SLOT(showFile()));//文件connect(btncolor,SIGNAL(clicked()),this,SLOT(showColor()));//颜色connect(btnfont,SIGNAL(clicked()),this,SLOT(showFont()));//字体connect(btninput,SIGNAL(clicked()),this,SLOT(showInputDlg()));//输入????用qDebug调试一下,你来、connect(btnMsg,SIGNAL(clicked()),this,SLOT(showMsgDlg()));//消息connect(btnCustom,SIGNAL(clicked()),this,SLOT(showCustomDlg()));//消息}Dialog::~Dialog()
{
}//标准文件对话框实例
void Dialog::showFile()
{QString s=QFileDialog::getOpenFileName(this,"open file dialog","/","c++ files(*.cpp)::c files(*.c)::Head files(*.h)");linefile->setText(s);
}//标准颜色对话框
void Dialog::showColor()
{QColor c =QColorDialog::getColor(Qt::blue);if(c.isValid()){framecolor->setPalette(QPalette(c));}
}//标准字体对话框
void Dialog::showFont()
{bool ok;QFont f=QFontDialog::getFont(&ok);if(ok){linefont->setFont(f);}}//输入标准对话框
void Dialog::showInputDlg()
{Dlginput=new InputDlg(this);//this啥意思,你这个是弹窗,不是替换原有界面,this删掉Dlginput->show();//????qDebug()<<"hhhhhh"<<endl;//下次注意-能进去,说明你这个弹窗不对劲
}void Dialog::showMsgDlg()
{Dlgmsg=new MsgBoxDlg();Dlgmsg->show();}//用户自定义消息框
void Dialog::showCustomDlg()
{label->setText(QStringLiteral("Custom Message Box"));QMessageBox customMsgBox;customMsgBox.setWindowTitle(QStringLiteral("用户自定义消息框"));QPushButton *yesBtn=customMsgBox.addButton(QStringLiteral("Yes"),QMessageBox::ActionRole);QPushButton *noBtn=customMsgBox.addButton(QStringLiteral("No"),QMessageBox::ActionRole);QPushButton *cancelBtn=customMsgBox.addButton(QMessageBox::Cancel);customMsgBox.setText(QStringLiteral("这是一个用户自定义消息框"));customMsgBox.setIconPixmap(QPixmap("Qt.png"));customMsgBox.exec();if(customMsgBox.clickedButton()==yesBtn)label->setText(QStringLiteral("Custom Message Box/Yes"));if(customMsgBox.clickedButton()==noBtn)label->setText(QStringLiteral("Custom Message Box/No"));if(customMsgBox.clickedButton()==cancelBtn)label->setText(QStringLiteral("Custom Message Box/Cancel"));return;
}

2.标准颜色对话框

 3.标准字体对话框

 4.标准输入对话框

4.1标准字符串输入对话框

 

4.2标准条目选择对话框

4.3标准int类型输入对话框

4.4标准double类型输入对话框

 inputdlg.h

#ifndef INPUTDLG_H
#define INPUTDLG_H#include <QObject>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QGridLayout>
#include <QDialog>
#include <QWidget>class InputDlg : public QDialog
{Q_OBJECT
public:explicit InputDlg(QWidget *parent = nullptr);signals:private slots:void  ChangeName();void  ChangeSex();void  ChangeAge();void  ChangeScore();private:QLabel *labname1;QLabel *labsex1;QLabel *labage1;QLabel *labscore1;QLabel *labname2;QLabel *labsex2;QLabel *labage2;QLabel *labscore2;QPushButton  *btnname;QPushButton  *btnsex;QPushButton  *btnage;QPushButton  *btnscore;QGridLayout  *mainLayout;
};#endif // INPUTDLG_H

 inputdlg.cpp

#include "inputdlg.h"
#include <QString>
#include <QWidget>
#include <QGridLayout>
#include <QInputDialog>
InputDlg::InputDlg(QWidget *parent) : QDialog(parent)
{setWindowTitle(QStringLiteral("各种标准对话框的实例"));labname1=new QLabel;labname1->setText(QStringLiteral("姓名"));labname2=new QLabel;labname2->setText(QStringLiteral("张三"));labname2->setFrameStyle(QFrame::Panel|QFrame::Sunken);btnname=new QPushButton;btnname->setText(QStringLiteral("修改姓名"));labsex1=new QLabel;labsex1->setText(QStringLiteral("性别"));labsex2=new QLabel;labsex2->setText(QStringLiteral("男"));labsex2->setFrameStyle(QFrame::Panel|QFrame::Sunken);btnsex=new QPushButton;btnsex->setText(QStringLiteral("修改性别"));labage1=new QLabel;labage1->setText(QStringLiteral("年龄"));labage2=new QLabel;labage2->setText(QStringLiteral("21"));labage2->setFrameStyle(QFrame::Panel|QFrame::Sunken);btnage=new QPushButton;btnage->setText(QStringLiteral("修改年龄"));labscore1=new QLabel;labscore1->setText(QStringLiteral("成绩"));labscore2=new QLabel;labscore2->setText(QStringLiteral("98"));labscore2->setFrameStyle(QFrame::Panel|QFrame::Sunken);btnscore=new QPushButton;btnscore->setText(QStringLiteral("修改成绩"));//布局“QGridLayout::QGridLayout(const QGridLayout &)”: 无法将参数 1 从“InputDlg *”转换为“QWidget *” ---说明QObject不能实现mainLayout =new  QGridLayout(this);mainLayout->addWidget(labname1,0,0);mainLayout->addWidget(labname2,0,1);mainLayout->addWidget(btnname,0,2);mainLayout->addWidget(labsex1,1,0);mainLayout->addWidget(labsex2,1,1);mainLayout->addWidget(btnsex,1,2);mainLayout->addWidget(labage1,2,0);mainLayout->addWidget(labage2,2,1);mainLayout->addWidget(btnage,2,2);mainLayout->addWidget(labscore1,3,0);mainLayout->addWidget(labscore2,3,1);mainLayout->addWidget(btnscore,3,2);mainLayout->setMargin(15);mainLayout->setSpacing(10);//信号与槽的连接connect(btnname,SIGNAL(clicked()),this,SLOT(ChangeName()));connect(btnsex,SIGNAL(clicked()),this,SLOT(ChangeSex()));connect(btnage,SIGNAL(clicked()),this,SLOT(ChangeAge()));connect(btnscore,SIGNAL(clicked()),this,SLOT(ChangeScore()));}void InputDlg::ChangeName()
{bool ok;QString  text=QInputDialog::getText(this,QStringLiteral("标准字符串"),QStringLiteral("请输入姓名:"),QLineEdit::Normal,labname2->text(),&ok);if(ok&&!text.isEmpty()){labname2->setText(text);}
}void InputDlg::ChangeSex()
{QStringList SexItems;SexItems<<QStringLiteral("男")<<QStringLiteral("女");bool ok;QString SexItem=QInputDialog::getItem(this,QStringLiteral("标准条目选择对话框"),QStringLiteral("请选择性别:"),SexItems,0,false,&ok);if(ok&&!SexItem.isEmpty()){labsex2->setText(SexItem);}}void InputDlg::ChangeAge()
{bool ok;int age=QInputDialog::getInt(this,QStringLiteral("标准int类型输入话框"),QStringLiteral("请选择年龄:"),labage2->text().toInt(&ok),0,100,1,&ok);if(ok){labsex2->setText(QString(QStringLiteral("%1")).arg(age));}}void InputDlg::ChangeScore()
{bool ok;double score=QInputDialog::getDouble(this,QStringLiteral("标准double类型输入话框"),QStringLiteral("请输入成绩:"),labscore2->text().toDouble(&ok),0,100,1,&ok);if(ok){labscore2->setText(QString(QStringLiteral("%1")).arg(score));}
}

5.消息对话框

5.1Question 消息框

5.2Information 消息框

 

5.3Warning 消息框

5.4Critical 消息框

5.5About 消息框

5.6About  Qt 消息框

 msgboxdlg.h

#ifndef MSGBOXDLG_H
#define MSGBOXDLG_H
#include <QWidget>
#include <QTextCodec>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QGridLayout>
class MsgBoxDlg : public QWidget
{Q_OBJECT
public:explicit MsgBoxDlg(QWidget *parent = nullptr);signals:
private:QLabel *label;QPushButton  *btnquestion;QPushButton  *btninformation;QPushButton  *btnwarning;QPushButton  *btncritical;QPushButton  *btnabout;QPushButton  *btnQtabout;QGridLayout  *mainLayout;private slots:void  showQuestionMsg();void  showInformationMsg();void  showWarningMSg();void  showCriticalMsg();void  showAboutMsg();void  showAboutQtMsg();};#endif // MSGBOXDLG_H

 msgboxdlg.cpp

#include "msgboxdlg.h"
#include <QMessageBox>
MsgBoxDlg::MsgBoxDlg(QWidget *parent) : QWidget(parent)
{setWindowTitle(QStringLiteral("标准消息对话框实例"));label=new QLabel;label->setText(QStringLiteral("请选择一种消息框"));btnquestion=new QPushButton;btnquestion->setText(QStringLiteral("QuestionMSg"));btninformation=new QPushButton;btninformation->setText(QStringLiteral("InformationMSg"));btnwarning=new QPushButton;btnwarning->setText(QStringLiteral("WarningMSg"));btncritical=new QPushButton;btncritical->setText(QStringLiteral("CriticalMSg"));btnabout=new QPushButton;btnabout->setText(QStringLiteral("AboutMSg"));btnQtabout=new QPushButton;btnQtabout->setText(QStringLiteral("AboutQtMSg"));//布局mainLayout =new  QGridLayout(this);mainLayout->addWidget(label,0,0,1,2);mainLayout->addWidget(btnquestion,1,0);mainLayout->addWidget(btninformation,1,1);mainLayout->addWidget(btnwarning,2,0);mainLayout->addWidget(btncritical,2,1);mainLayout->addWidget(btnabout,3,0);mainLayout->addWidget(btnQtabout,3,1);//信号与槽connect(btnquestion,&QPushButton::clicked,[this](){showQuestionMsg();});connect(btninformation,&QPushButton::clicked,[this](){showInformationMsg();});connect(btnwarning,&QPushButton::clicked,[this](){showWarningMSg();});connect(btncritical,&QPushButton::clicked,[this](){showCriticalMsg();});connect(btnabout,&QPushButton::clicked,[this](){showAboutMsg();});connect(btnQtabout,&QPushButton::clicked,[this](){showAboutQtMsg();});}void MsgBoxDlg::showQuestionMsg()
{label->setText(QStringLiteral("QUestion Message Box"));switch(QMessageBox::question(this,QStringLiteral("Question消息框"),QStringLiteral("您现在已经修改完成,是否要结束程序"),QMessageBox::Ok|QMessageBox::Cancel,QMessageBox::Ok)){case QMessageBox::Ok:label->setText(QStringLiteral("Question button/ok"));break;case QMessageBox::Cancel:label->setText(QStringLiteral("Question button/Cancel"));break;default:break;}return;}void MsgBoxDlg::showInformationMsg()
{label->setText(QStringLiteral("Information Message Box"));QMessageBox::information(this,QStringLiteral("Information消息框"),QStringLiteral("这是Information消息对话框,欢迎您!"));return;
}void MsgBoxDlg::showWarningMSg()
{label->setText(QStringLiteral("Warning Message Box"));switch(QMessageBox::warning(this,QStringLiteral("Warning消息框"),QStringLiteral("您修改的内容还没有保存,是否保存对文档的修改?"),QMessageBox::Save|QMessageBox::Discard|QMessageBox::Cancel,QMessageBox::Save)){case QMessageBox::Save:label->setText(QStringLiteral("Warning button/Save"));break;case QMessageBox::Cancel:label->setText(QStringLiteral("Warning button/Cancel"));break;case QMessageBox::Discard:label->setText(QStringLiteral("Warning button/Discard"));break;default:break;}return;
}void MsgBoxDlg::showCriticalMsg()
{label->setText(QStringLiteral("Critical Message Box"));QMessageBox::critical(this,QStringLiteral("Critical消息框"),QStringLiteral("这是Critical消息对话框测试!"));return;
}void MsgBoxDlg::showAboutMsg()
{label->setText(QStringLiteral("About Message Box"));QMessageBox::about(this,QStringLiteral("About消息框"),QStringLiteral("这是About消息对话框测试!"));return;
}void MsgBoxDlg::showAboutQtMsg()
{label->setText(QStringLiteral("About Qt Message Box"));QMessageBox::aboutQt(this,QStringLiteral("About Qt消息框"));return;
}

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

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

相关文章

开源的密码学工具库:openssl安装在docker容器环境Linux(ubuntu18.04)

OpenSSL&#xff08;Open Secure Socket Layer&#xff09;是一个开源的密码学工具库&#xff0c;它提供了一系列的加密、解密、认证和通信安全相关的功能。OpenSSL 最初是为了支持安全的网络通信而设计的&#xff0c;但后来它的功能逐渐扩展到了许多不同的领域&#xff0c;包括…

详细整合Spring+SpringMVC+MyBatis+logback(SSM)项目

整体目录结构 表结构 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.a…

Zabbix-6.4.4 邮箱告警SMS告警配置

目录 ​------------------------- # 邮箱告警 ---------------------------------- 1.安装mailx与postfix软件包 2.修改mailx配置文件 3. 创建文件夹 4. 编写mail-send.sh脚本 5. 将该脚本赋予执行权限 6. 进入web界面进行设置—> Alerts —> Media Types 7. 添…

【Java从0到1学习】09 正则表达式

1. 正则表达式概述 在编写处理字符串的程序或网页时&#xff0c;经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说&#xff0c;正则表达式就是记录文本规则的代码。 正则表达式&#xff0c;又称正规表示法、常规表示法&#xff…

Redis基础概念和数据类型详解

目录 1.什么是Redis&#xff1f; 2.为什么要使用Redis&#xff1f; 3.Redis为什么这么快&#xff1f; 4.Redis的使用场景有哪些&#xff1f; 5.Redis的基本数据类型 5.1 5种基础数据类型 5.1.1 String字符串 5.1.2 List列表 5.1.3 Set集合 5.1.4 Hash散列 5.1.5 Zset有序集…

第8章:集成学习

个体与集成 同质&#xff1a;相同的基学习器&#xff0c;实现容易&#xff0c;但是很难保证差异性。异质&#xff1a;不同的基学习器&#xff0c;实现复杂&#xff0c;不同模型之间本来就存在差异性&#xff0c;但是很难直接比较不同模型的输出&#xff0c;需要复杂的配准方法。…

HTML浪漫动态表白代码+音乐(附源码)(二)

一. 前言 七夕马上就要到了&#xff0c;为了帮助大家高效表白&#xff0c;下面再给大家加几款实用的HTML浪漫表白代码(附源码)背景音乐&#xff0c;可用于520&#xff0c;情人节&#xff0c;生日&#xff0c;求爱表白等场景&#xff0c;可直接使用。 来吧&#xff0c;展示&am…

gor工具http流量复制、流量回放,生产运维生气

gor是一款流量复制回放工具&#xff0c;gor工具的官网&#xff1a;https://goreplay.org/ 1、对某个端口的http流量进行打印 ./gor --input-raw :8000 --output-stdout 2、对流量实时转发&#xff0c;把81端口流量转发到192.168.3.221:80端口 ./gor --input-raw :81--output-ht…

第一百三十一天学习记录:数据结构与算法基础:栈和队列(下)(王卓教学视频)

队列的表示和操作的实现 循环顺序队列是一种使用数组来实现的队列结构&#xff0c;其中头指针和尾指针表示队列的头部和尾部位置。 当队列为空时&#xff0c;头指针和尾指针都指向同一个位置&#xff0c;即数组的第一个位置。这是因为在空队列中&#xff0c;没有任何元素可以作…

【算法刷题之数组篇(1)】

目录 1.leetcode-59. 螺旋矩阵 II&#xff08;题2.题3相当于二分变形&#xff09;2.leetcode-33. 搜索旋转排序数组3.leetcode-81. 搜索旋转排序数组 II(与题目2对比理解)&#xff08;题4和题5都是排序双指针&#xff09;4.leetcode-15. 三数之和5.leetcode-18. 四数之和6.leet…

系统卡死问题分析

CPU模式 CPU Frequency Scaling (CPUFREQ) Introduction CPU频率调节设备驱动程序的功能。该驱动程序允许在运行过程中更改CPU的时钟频率。一旦CPU频率被更改,必要的电源供应电压也会根据设备树脚本(DTS)中定义的电压值进行变化。通过降低时钟速度,这种方法可以减少功耗…

第2步---MySQL卸载和图形化工具展示

第2步---MySQL卸载和图形化工具展示 1.MySQL的卸载 2.MySQL的图形化工具 2.1常见的图形化工具 SQLyog&#xff1a;简单。SQLyog首页、文档和下载 - MySQL 客户端工具 - OSCHINA - 中文开源技术交流社区 Mysql Workbench &#xff1a;MySQL :: MySQL Workbench DataGrip&…

PHP-MD5注入

0x00 前言 有些零散的知识未曾关注过&#xff0c;偶然捡起反而更加欢喜。 0x01 md5 注入绕过 md5函数有两个参数&#xff0c;第一个参数是要进行md5的值&#xff0c;第二个值默认为false&#xff0c;如果为true则返回16位原始二进制格式的字符串。意思就是会将md5后的结果当…

什么是BEM命名规范?为什么要使用BEM命名规范?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ BEM命名规范⭐ 为什么使用BEM命名规范&#xff1f;⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为…

市面上那里有稳定L2股票行情数据接口?

随着市场的发展和技术的进步&#xff0c;level2股票行情数据接口已经成为股票交易软件的标准配置之一。虽然这些券商软件的功能在很大程度上相似&#xff0c;但它们仍然有自己的特点和优势。 例如&#xff1a;通过股票交易所以其专业的研究报告和丰富的信息服务而受到广泛关注&…

登陆接口的的Filter过滤

目录 一、概述 二、基本操作 三、登陆检查接口 一、概述 什么是Filter&#xff1f; Filter表示过滤器&#xff0c;是 JavaWeb三大组件(Servlet、Filter、Listener)之一。 过滤器可以把对资源的请求拦截下来&#xff0c;从而实现一些特殊的功能 使用了过滤器之后&#xff0…

2、手写模拟Spring底层原理

创建BeanDefinition bean定义 设置BeanDefinition 的类信息&#xff0c;作用域信息 创建beanDefinitionMap scope为原型&#xff1a; scope为单例&#xff1a; 总结&#xff1a; 扫描ComponentScan注解上的包扫描路径&#xff0c;将Component注解修饰的类&#xff0c;生成Bea…

实现简单的element-table的拖拽效果

第一步&#xff0c;先随便创建element表格 <el-table ref"dragTable" :data"tableData" style"width: 100%" border fit highlight-current-row><el-table-column label"日期" width"180"><template slot-sc…

基于Spring Boot的机场VIP客户管理系统的设计与实现(Java+spring boot+MySQL)

获取源码或者论文请私信博主 演示视频&#xff1a; 基于Spring Boot的机场VIP客户管理系统的设计与实现&#xff08;Javaspring bootMySQL&#xff09; 使用技术&#xff1a; 前端&#xff1a;html css javascript jQuery ajax thymeleaf 微信小程序 后端&#xff1a;Java s…

6G 特点及表现

6G R&D Vision: Requirements and Candidate Technologies 5G已经提出来了大移动带宽&#xff0c;低时延和大规模机器互联&#xff0c;在这个基础上&#xff0c;6G加上了高可靠性&#xff0c;高定位精度和高智能化。 6G的主要候选技术&#xff0c;包括(子) THz 通信&#x…