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.rhkb.cn/news/101293.html

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

相关文章

通过DBeaver 给Postgre SQL表 设置主键自增

1.创建表 CREATE TABLE public.company ( id int4 NOT NULL , name text NOT NULL, age int4 NOT NULL, address bpchar(50) NULL, salary float4 NULL, join_date date NULL, CONSTRAINT company_pkey PRIMARY KEY (id) ); 2.插入数据&#xff08;不传入id&#xff…

【Leetcode】104.二叉树的最大深度

一、题目 1、题目描述 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例1: 输入:root = [3,9,20,null,null,15,7] 输出:3示例2: 输入:root = [1,null,2] 输出:2提示: 树中节点的数量在 [0, 104…

并查集及其简单应用

文章目录 一.并查集二.并查集的实现三.并查集的基本应用 一.并查集 并查集的逻辑结构:由多颗不相连通的多叉树构成的森林(一个这样的多叉树就是森林的一个连通分量) 并查集的元素(树节点)用0~9的整数表示,并查集可以表示如下: 并查集的物理存储结构:并查集一般采用顺序结构实…

【Redis】——Redis基础的数据结构以及应用场景

什么是redis数据库 Redis 是一种基于内存的数据库&#xff0c;对数据的读写操作都是在内存中完成&#xff0c;因此读写速度非常快&#xff0c;常用于缓存&#xff0c;消息队列、分布式锁等场景。&#xff0c;Redis 还支持 事务 、持久化、Lua 脚本、多种集群方案&#xff08;主…

Centos7卸载|安装JDK1.8|Xshell7批量控制多个终端

一: 使用yum安装的好处是较为方便|环境变量自动配置完成。 1.1: 执行下面的命令,检查是否已安装了jdk # 查看当前是否安装了JDK&#xff0c; [rootwww ~]# rpm -qa |grep java [rootwww ~]# rpm -qa |grep jdk [rootwww ~]# rpm -qa |grep gcj [rootwww ~]# rpm -qa | grep -…

数据结构——二叉搜索树(附带C++实现版本)

文章目录 二叉搜索树概念 二叉树的实际应用二叉树模拟实现存储结构二叉搜索树构成二叉搜索树的查找插入操作中序遍历二叉树的删除循环(利用左子树最右节点&#xff09;递归(利用右子树根节点) 二叉树拷贝二叉树资源的销毁 二叉树实现完整代码总结 二叉搜索树 概念 二叉搜索树…

PHPStudy 安装tp8 php8.2.9

一、PhpStudy升级PHP版本&#xff0c;安装PHP8.2操作步骤 1.1、官网下载最新的php版本 打开Windows版的官网下载&#xff0c;地址&#xff1a;https://windows.php.net/download/ 页面上有不同的PHP版本&#xff0c;这里我们下载的是64位nts版的PHP8.2.9。 1.2、解压下载的文…

2023.8 - java - 泛型

泛型问题的引出&#xff1a; jdk 1.5 引出泛型 // package 泛型; public class index {public static void main (String[] args){test t new test();t.setContent("aaa");int a (int) t.getContent();System.out.println(a);} }class test{Object content;publi…

国内常见的几款可视化Web组态软件

组态软件是一种用于控制和监控各种设备的软件&#xff0c;也是指在自动控制系统监控层一级的软件平台和开发环境。这类软件实际上也是一种通过灵活的组态方式&#xff0c;为用户提供快速构建工业自动控制系统监控功能的、通用层次的软件工具。通常用于工业控制&#xff0c;自动…

[SWPUCTF 2022 新生赛]ez_ez_php

这段代码是一个简单的PHP文件处理脚本。让我们逐行进行分析&#xff1a; error_reporting(0); - 这行代码设置了错误报告的级别为0&#xff0c;意味着不显示任何错误。 if (isset($_GET[file])) { - 这行代码检查是否存在一个名为"file"的GET参数。 if ( substr($_…

无涯教程-Perl - wantarray函数

描述 如果当前正在执行的函数的context正在寻找列表值,则此函数返回true。在标量context中返回false。 语法 以下是此函数的简单语法- wantarray返回值 如果没有context,则此函数返回undef&#xff1b;如果lvalue需要标量,则该函数返回0。 例 以下是显示其基本用法的示例…

记录Taro巨坑,找不到sass类型定义文件

问题 taronutuisassts项目里tsconfig.json一直报红报错。 找不到“sass”的类型定义文件。 程序包含该文件是因为: 隐式类型库 “sass” 的入口点 其实正常人想的肯定是装上 types/sass试试。开始我试过了&#xff0c;没用。删了依赖重装也没用。后面在issue中找到答案了 解决…

Mybatis的SqlSource SqlNode BoundSql

学习链接 MyBatis SqlSource解析 【Mybatis】Mybatis源码之SqlSource#getBoundSql获取预编译SQL Mybatis中SqlSource解析流程详解 Mybatis TypeHandler解析 图解 Mybatis的SqlSource&SqlNode - processon DynamicSqlSource public class DynamicSqlSource implement…

05-微信小程序常用组件-表单组件

05-微信小程序常用组件-表单组件 文章目录 表单组件button 按钮案例代码 form 表单案例代码 image 图片支持长按识别的码案例代码 微信小程序包含了六大组件&#xff1a; 视图容器、 基础内容、 导航、 表单、 互动和 导航。这些组件可以通过WXML和WXSS进行布局和样式设…

800V高压电驱动系统架构分析

需要电驱竞品样件请联&#xff1a;shbinzer &#xff08;拆车邦&#xff09; 过去一年是新能源汽车市场爆发的一年&#xff0c;据中汽协数据&#xff0c;2021年新能源汽车销售352万辆&#xff0c;同比大幅增长157.5%。新能源汽车技术发展迅速&#xff0c;畅销车辆在动力性能…

【Python原创设计】基于Python Flask的全国气象数据采集及可视化系统-附下载方式以及项目参考论文,原创项目其他均为抄袭

基于Python Flask的全国气象数据采集及可视化系统 一、项目简介二、项目技术三、项目功能四、运行截图五、分类说明六、实现代码七、数据库结构八、源码下载 一、项目简介 本项目是一个基于Web技术的实时气象数据可视化系统。通过爬取中国天气网的各个城市气象数据&#xff0c…

Nginx高可用集群

目录 一.简介二.案例1.实现思路2.配置文件修改3.实现效果故障转移机制 一.简介 以提高应用系统的可靠性&#xff0c;尽可能地减少中断时间为目标&#xff0c;确保服务的连续性&#xff0c;达到高可用的容错效果。例如“故障切换”、“双机热备”、“多机热备”等都属于高可用集…

ceph集群的扩容缩容

文章目录 集群扩容添加osd使用ceph-deploy工具手动添加 添加节点新节点前期准备新节点安装ceph&#xff0c;出现版本冲突 ceph-deploy增加节点 集群缩容删除osd删除节点 添加monitor节点删除monitor节点使用ceph-deploy卸载集群 实验所用虚拟机均为Centos 7.6系统&#xff0c;8…

windows系统丢失mfc120u.dll的解决方法

1.mfc120u.dll是什么 mfc120u.dll是Windows操作系统中的一个动态链接库&#xff08;Dynamic Link Library&#xff0c;简称DLL&#xff09;文件。它包含了一些用于运行C程序的函数和其他资源。这个特定的DLL文件是Microsoft Foundation Classes&#xff08;MFC&#xff09;库的…

【数据结构OJ题】相交链表

原题链接&#xff1a;https://leetcode.cn/problems/intersection-of-two-linked-lists/description/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 看到这道题&#xff0c;很容易想到的方法就是暴力求解&#xff0c;就是将一个链表的每个结点的地址…