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

【Qt】内置对话框

一.Qt内置对话框

Qt 提供了多种可复⽤的对话框类型,即 Qt 标准对话框。Qt标准对话框全部继承于QDialog类。常⽤标准对话框如下:

二.内置对话框分类

1.消息对话框 QMessageBox

1.1 概念

消息对话框是应⽤程序中最常⽤的界⾯元素。消息对话框主要⽤于为用户提⽰重要信息,强制用户进行选择操作。

1.2 静态成员函数

QMessageBox类中定义了静态成员函数,可以直接调⽤创建不同风格的消息对话框,其中包括:

静态成员函数说明
Question⽤于正常操作过程中的提问
Information⽤于报告正常运⾏信息
Warning⽤于报告⾮关键错误
Critical⽤于报告严重错误

函数原型:

1.3 代码示例 

  eg1:问题提示消息对话框

代码:

   //创建按钮QPushButton * btn=new QPushButton("Message dialog",this);//设置按钮大小和位置btn->resize(200,200);btn->move(300,300);//创建消息对话框QMessageBox *msg=new QMessageBox(this);//设置对话框标题msg->setWindowTitle("Warning");//设置对话框文本msg->setText("Error Message");//设置对话框类型msg->setIcon(QMessageBox::Question);//设置按钮msg->setStandardButtons(QMessageBox::Ok | QMessageBox::Close);//关联信号槽connect(btn,&QPushButton::clicked,[=](){msg->show();});

运行结果:

我们可以选择的按钮有:

eg2:错误提⽰消息对话框:

代码:(和上面除类型改变,几乎没区别)

    //创建按钮QPushButton * btn=new QPushButton("Message dialog",this);//设置按钮大小和位置btn->resize(200,200);btn->move(300,300);//创建消息对话框QMessageBox *msg=new QMessageBox(this);//设置对话框标题msg->setWindowTitle("Warning");//设置对话框文本msg->setText("Error Message");//设置对话框类型msg->setIcon(QMessageBox::Warning);//设置按钮msg->setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel);//关联信号槽connect(btn,&QPushButton::clicked,[=](){msg->show();});

运行结果:

eg2:利用函数快速创建消息对话框

//警告
void MainWindow::on_pushButton_clicked()
{//参数1:父窗口的地址 参数2:对话框窗口标题 参数3:对话框内的文本 参数4:添加按钮QMessageBox::warning(this,"对话框标题","对话框文本",QMessageBox::Ok | QMessageBox::Save);
}
//报错
void MainWindow::on_pushButton_2_clicked()
{QMessageBox::critical(this,"对话框标题","对话框文本",QMessageBox::Ok | QMessageBox::Save);
}
//消息
void MainWindow::on_pushButton_3_clicked()
{QMessageBox::information(this,"对话框标题","对话框文本",QMessageBox::Ok | QMessageBox::Save);
}
//问题
void MainWindow::on_pushButton_4_clicked()
{QMessageBox::question(this,"对话框标题","对话框文本",QMessageBox::Ok | QMessageBox::Save);
}

运行结果:

2.颜⾊对话框 QColorDialog

2.1 概念

QColorDialog是一个对话框类,用于选择颜色。

2.2 常用方法

1、 //创建对象的同时设置⽗对象

QColorDialog(QWidget* parent = nullptr) 

 2、//创建对象的同时通过QColor 对象设置默认颜⾊和⽗对象

QColorDialog(const QColor &initial, QWidget* parent =nullptr) 

3、//设置当前颜⾊对话框

void setCurrentColor(const QColor &color) 

4、 //获取当前颜⾊对话框 

QColor currentColor()const

5 、 //打开颜⾊ 选择对话框,并返回⼀个QColor对象

QColor getColor(const QColor &initial = Qt::white,QWidget *parent = nullptr,const QString  &title = QString(), QColorDialog::ColorDialogOptions options = ColorDialogOptions())

参数说明:

 initial:设置默认颜色

 parent:设置⽗对象

title:设置对话框标题

options:设置选项

2.3 代码示例

eg1:

  //创建按钮QPushButton* btn=new QPushButton("get ColorDialog",this);//设置按钮大小btn->resize(200,100);//创建颜色对话框QColorDialog* dia=new QColorDialog(this);//编辑信号槽函数connect(btn,&QPushButton::clicked,[=](){//使用getColor函数,打开颜色对话框,并设置默认颜色QColor color=dia->getColor(QColor(0,0,255));qDebug()<<color.red();qDebug()<<color.green();qDebug()<<color.blue();});

运行结果:

eg2:

//创建按钮QPushButton* btn=new QPushButton("get ColorDialog",this);//设置按钮大小btn->resize(200,100);//创建颜色对话框QColorDialog* dia=new QColorDialog(this);//编写槽函数connect(btn,&QPushButton::clicked,[=](){//设置颜色dia->setCurrentColor(QColor(100,100,100));//打开颜色对话框dia->open();});

运行结果:

3.⽂件对话框 QFileDialog

3.1 概念

文件对话框应用于打开一个外部文件或者将当前内容保存至外部文件。

3.2 常用方法

1.打开一个文件

QString getOpenFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(),
QString*selectedFilter =nullptr,QFileDialog::Options options=Options())

2.打开多个文件

QString getOpenFileNames(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(),
QString*selectedFilter =nullptr,QFileDialog::Options options=Options())

3.保存文件

QString getSaveFileName (QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(),
QString*selectedFilter =nullptr,QFileDialog::Options options=Options())

参数含义:

参数1:parent ⽗亲

参数2:caption 对话框标题

参数3:dir 默认打开的路径

参数4:filter ⽂件过滤器

3.3 代码示例

eg1:打开文件

//创建按钮QPushButton* btn=new QPushButton(this);//创建文件对话框QFileDialog* dia=new QFileDialog(this);//编写槽函数connect(btn,&QPushButton::clicked,[=](){//调用函数   getopenfilenameQString str=dia->getOpenFileName(this,"file","D:\coad\text_2_20");qDebug()<<str;});

运行结果:

eg2:保存文件

   //创建按钮QPushButton* btn=new QPushButton(this);//创建文件对话框QFileDialog* dia=new QFileDialog(this);connect(btn,&QPushButton::clicked,[=](){QString str=dia->getSaveFileName(this,"save file","D:\coad\text.c_1_2");qDebug()<<str;});

运行结果:

要想要真正实现保存文件功能,还需要应用file,后面我们会在file章节进行功能完善。

4.字体对话框 QFontDialog

4.1 概念

用于选择字体的对话框

4.2 常用方法

1.QFontDialog(parent):创建一个新的 QFontDialog 对象,parent 是可选的父窗口。

QFontDialog * dialog = new QFontDialog(this);



2.getFont():静态函数,显示字体对话框并返回用户选择的字体。返回值是一个 QFont 对象。

bool ok =false;
QFont font = QFontDialog::getFont(&ok);



3.setFont(font):设置默认显示的字体为 font。

QLabel *label = new QLabel(this);
label->setFont(font);


 

4.3 代码示例

eg:

 QPushButton* btn=new QPushButton("Font",this);connect(btn,&QPushButton::clicked,[=](){//使用静态方法getfont, 打开字体对话框并返回 初值格式bool flag;QFont font=QFontDialog::getFont(&flag,QFont("华文行楷",37));//打印字体qDebug()<<font.family().toUtf8().data();//打印字号qDebug()<<font.pointSize();//判断是否加粗qDebug()<<font.bold();});

运行结果:

5.输⼊对话框 QInputDialog

5.1 概念

在Qt中,QInputDialog是一个对话框类,用于获取用户输入的数据。它提供了多种输入类型的方法,包括文本、整数、浮点数和选项。使用时只需包含QInputDialog头文件,然后使用适当的方法调用它即可。

5.2 常用方法

1.getInt:整型输⼊数据对话框

int result = QInputDialog::getInt(this,"整数对话框","请输入整数:");



2.getDouble:双精度浮点型输入数据对话框

double result = QInputDialog::getDouble(this,"浮点数对话框","请输入浮点数:");



3.getItem:选择条目型输⼊对话框

QString result = QInputDialog::getItem(this,"条目对话框","请输入条目:",item);

参数说明:

parent:父节点

title:对话框标题

label:对话框标签

items:可供选择的条⽬

5.3 代码示例

eg:

在designer上手动创建三个按钮

编写槽函数:

void MainWindow::on_pushButton_clicked()
{int result = QInputDialog::getInt(this,"Int Dialog","input int:");qDebug()<<result;
}void MainWindow::on_pushButton_2_clicked()
{double result = QInputDialog::getDouble(this,"Double Dialog","input double:");qDebug()<<result;
}void MainWindow::on_pushButton_3_clicked()
{//创建一个string链表QStringList item ;//进行尾插item.push_back("book");item.push_back("pen");item.push_back("pencil");item.push_back("eraser");item.push_back("phone");QString result = QInputDialog::getItem(this,"Item Dialog","input item:",item);qDebug()<<result;

运行结果:

点击INT按钮:

点击Double按钮:

点击Item按钮:

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • PTA求简单交错序列前N项和
  • CSS的:host伪类:精粹自定义Web组件选择艺术
  • 【1.0】vue3的创建
  • 检测到目标URL存在http host头攻击漏洞
  • 智能电梯标志新时代:墨水屏电子标签引领变革
  • 【网络安全】IDOR导致信息泄露
  • 易企秀场景秀源码系统全新升级,方便制作各种Html5应用的制作工具 带完整的安装代码包以及搭建部署教程
  • QT的基础数据类型(上)
  • DOM型xss靶场实验
  • 【基础算法总结】多源 BFS_多源最短路问题
  • 基于django的双选宠物托管服务平台/python宠物托管系统
  • 设计模式反模式:UML图示常见误用案例分析
  • 深度学习入门-01
  • 车载以太网自动化测试套件—AETP.UDS
  • 一条sql 在MySQL中是如何执行的
  • 深入了解以太坊
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • Android交互
  • Babel配置的不完全指南
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • es6(二):字符串的扩展
  • Laravel5.4 Queues队列学习
  • Netty源码解析1-Buffer
  • oldjun 检测网站的经验
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • Python - 闭包Closure
  • Spring Boot快速入门(一):Hello Spring Boot
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 前端代码风格自动化系列(二)之Commitlint
  • 前端工程化(Gulp、Webpack)-webpack
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 使用 @font-face
  • 无服务器化是企业 IT 架构的未来吗?
  • No resource identifier found for attribute,RxJava之zip操作符
  • 1.Ext JS 建立web开发工程
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • ​14:00面试,14:06就出来了,问的问题有点变态。。。
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #FPGA(基础知识)
  • #微信小程序:微信小程序常见的配置传旨
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (bean配置类的注解开发)学习Spring的第十三天
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (每日一问)基础知识:堆与栈的区别
  • (南京观海微电子)——示波器使用介绍
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (学习日记)2024.01.09
  • (译)计算距离、方位和更多经纬度之间的点
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .net CHARTING图表控件下载地址
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .Net 高效开发之不可错过的实用工具
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况