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

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

相关文章:

  • ​8th参考文献:[8]许少辉.乡村振兴战略下传统村落文化旅游设计[M]北京:中国建筑出版传媒,2022.
  • Azure静态网站托管
  • LeetCode 热题 100(五):54. 螺旋矩阵、234. 回文链表、21. 合并两个有序链表
  • 常用消息中间件介绍
  • 装饰器读取不到被装饰函数的参数-已解决
  • python爬虫爬取中关村在线电脑以及参数数据
  • chatGPT-对话爱因斯坦
  • 嵌入式软件开发中的数据类型转换
  • The Go Blog 01:反射的法则(译文)
  • Visual Studio Code前端开发插件推荐
  • jps(JVM Process Status Tool):虚拟机进程状况工具
  • 初阶c语言:实战项目三子棋
  • 计网第三章(数据链路层)(三)
  • 蓝桥杯每日N题 (砝码称重)
  • Opencv 视频的读取与写入
  • LeetCode 833. Find And Replace in String【字符串,哈希表,模拟】1460
  • Cesium轨迹漫游及视角切换
  • 构建去中心化微服务集群,满足高可用性和高并发需求的实践指南!
  • 开集输出和开漏输出
  • 解决内网GitLab 社区版 15.11.13项目拉取失败
  • 【MySQL--->表的约束】
  • github中Keyless Google Maps API在网页中显示地图和标记 无需api key
  • ComPDFKit PDF SDK for Windows Crack
  • React+Typescript 状态管理
  • stable diffusion 运行时报错: returned non-zero exit status 1.
  • el-popover弹窗修改三角样式或者位置
  • Linux驱动开发之点亮三盏小灯
  • 【SA8295P 源码分析】71 - QAM8295P 原理图参考设计 之 MIPI DSI 接口硬件原理分析
  • macOS(m1/m2)破解Sublime Text和Navicat16
  • 【排排站:探索数据结构中的队列奇象】