Qt常用对话框设计

一、概述

Qt提供了多种自带的标准对话框,常见的对话框包括文件对话框颜色对话框字体对话框输入对话框消息对话框

二、文件对话框

文件对话框通过QFileDialog类实现,通过文件对话框可以打开一个文件浏览对话框,可以实现打开文件、文件目录选择、保存文件的功能。

2.1、打开一个文件

打开一个文件调用的函数原型为

QString QFileDialog::getOpenFileName(QWidget *parent = Q_NULLPTR, const QString &caption = QString(), 	//对话框标题const QString &dir = QString(), 		//初始目录const QString &filter = QString(), 	//文件过滤器QString *selectedFilter = Q_NULLPTR, Options options = Options());

该函数使用是主要使用前4个参数,示例程序代码如下:

    QString fileName;QString dlgTitle = "打开一个文件";QString filter = "文本文件(*.txt);;图片(*.jpg);;所有文件(*.*)";fileName = QFileDialog::getOpenFileName(this, dlgTitle, "", filter);

程序运行之后将会弹出如下图所示的对话框,选择完一个文件之后,文件名以及其路径将会返回至QString变量fileName。对话框仅用于获取所选文件的路径及名称,具体对文件的读操作则需要通过QFile等函数完成。
对话框标题以及文件过滤器所在的位置已在图中标出。
在这里插入图片描述

2.2、打开多个文件

可以在弹出的对话框中选择多个文件,其函数原型为:

QStringList QFileDialog::getOpenFileNames(QWidget *parent = Q_NULLPTR, const QString &caption = QString(), 	//对话框标题const QString &dir = QString(), 		//初始目录const QString &filter = QString(), 	//文件过滤器QString *selectedFilter = Q_NULLPTR, Options options = Options())

示例程序代码如下:

    QStringList fileNames;QString dlgTitle = "打开多个文件";QString filter = "文本文件(*.txt);;图片(*.jpg);;所有文件(*.*)";fileNames = QFileDialog::getOpenFileNames(this, dlgTitle, "", filter);

程序运行之后弹出的对话框与打开文件时相似,当选择完多个文件之后,各个文件的文件名以及其路径将会返回至QStringList变量fileNames中。

2.3、保存文件对话框

通过此对话框可以为文件选择保存的路径及文件名,其函数原型为:

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

示例程序代码如下:

    QString fileName;QString dlgTitle = "保存文件";QString filter = "文本文件(*.txt);;图片(*.jpg);;所有文件(*.*)";fileName = QFileDialog::getSaveFileName(this, dlgTitle, "", filter);

程序运行之后将会弹出如下图所示的对话框,可以选择现有的文件也可输入文件名创建新文件,操作完成后,文件名以及其路径将会返回至QString变量fileName。对话框仅用于获取文件保存的路径及名称,具体对文件的写操作则需要通过QFile等函数完成。
在这里插入图片描述

三、颜色对话框

颜色对话框通过QColorDialog类实现,通过此对话框可以选择一种需要的颜色,其函数原型为:

QColor QColorDialog::getColor(const QColor &initial = Qt::white, 	//保存所选颜色的变量QWidget *parent = Q_NULLPTR, const QString &title = QString(), 	//对话框标题ColorDialogOptions options = ColorDialogOptions())

示例程序代码如下,选择的颜色将会保存在QColor类变量thecolor中,通过Qpalette类可以为指定的对象设置颜色。

    QColor theColor;QString dlgTitle = "选择颜色";theColor = QColorDialog::getColor(theColor, this, dlgTitle);QPalette pal;pal.setColor(QPalette::Text, theColor);		//为调色板类设置颜色

程序运行之后将会弹出如下图所示的对话框
在这里插入图片描述

四、字体对话框

字体对话框通过QFontDialog类实现,通过此对话框可以选择一种需要的字体,其函数原型为:

QFont QFontDialog::getFont(bool *ok, 	//用于判断选择字体是否成功const QFont &initial, 	保存所选字体的变量QWidget *parent = Q_NULLPTR, const QString &title = QString(), 	//对话框标题FontDialogOptions options = FontDialogOptions())

示例程序代码如下,选择的字体将会保存在QFont类变量thefont中,可以直接用于设置对象的字体。

    QFont thefont;QString dlgTitle = "选择字体";bool ok = false;thefont = QFontDialog::getFont(&ok, thefont, this, dlgTitle);if(ok){ui->plainTextEdit->setFont(thefont);}

程序运行之后将会弹出如下图所示的对话框
在这里插入图片描述

五、输入对话框

输入对话框通过QInputDialog类实现,根据不同的输入数据类型可以分为输入文本、输入整数、输入浮点数下拉列表选择输入

5.1、输入文本对话框

通过此对话框可以输入一个字符串文本,其函数原型为:

QString QInputDialog::getText(QWidget *parent, const QString &title, 	//对话框标题const QString &label, 	//文本输入栏标签QLineEdit::EchoMode mode = QLineEdit::Normal, const QString &text = QString(), bool *ok = Q_NULLPTR, 	//输入成功标志Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone)

示例程序代码如下,通过对话框输入的文本将会保存在inputStr。

    QString inputStr;QString dlgTitle = "输入文字对话框";QString textLabel = "请输入文件名";inputStr = QInputDialog::getText(this, dlgTitle, textLabel);

程序运行之后将会弹出如下图所示的对话框
在这里插入图片描述

5.2、输入整数对话框

通过此对话框可以输入一个整数,其函数原型为:

int QInputDialog::getInt(QWidget *parent, const QString &title, 		//对话框标题const QString &label, 		//输入栏标签int value = 0, 			//输入栏默认值int min = -2147483647, 	//最大输入数值int max = 2147483647, 		//最小输入数值int step = 1, 				//spinBox步进大小bool *ok = Q_NULLPTR, 		//输入成功标志Qt::WindowFlags flags = Qt::WindowFlags())

示例程序代码如下,通过对话框输入的整数将会保存在intput中。

    int intput;QString dlgTitle = "输入整数对话框";QString label = "请输入字体大小";bool ok = false;QFont font = ui->plainTextEdit->font();int min = 0;int max = 20;int step = 1;intput = QInputDialog::getInt(this, dlgTitle, label, font.pointSize(), min, max, step);font.setPointSize(intput);ui->plainTextEdit->setFont(font);

程序运行之后将会弹出如下图所示的对话框
在这里插入图片描述

5.3、输入浮点数对话框

通过此对话框可以输入一个浮点数,其函数原型为:

double QInputDialog::getDouble(QWidget *parent, const QString &title, const QString &label, double value = 0, double min = -2147483647, double max = 2147483647, int decimals = 1, 			//小数点有效位数bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags())

示例程序代码如下,通过对话框输入的浮点数将会保存在intput中。

    float input;QString dlgTitle = "输入浮点数对话框";QString label = "请输入浮点数";float defVal = 12.00;float min = 0;float max = 1000;float dec = 2;input = QInputDialog::getDouble(this, dlgTitle, label, defVal, min, max, dec);ui->plainTextEdit->appendPlainText(QString::asprintf("%f", input));

程序运行之后将会弹出如下图所示的对话框
在这里插入图片描述

5.4、下拉列表选择输入对话框

通过此对话框可以从下拉列表中选择一个项,其函数原型为:

QString QInputDialog::getItem(QWidget *parent, const QString &title, const QString &label, const QStringList &items, 	//对话框中列表的内容int current = 0, bool editable = true, 		//列表内容是否可编辑bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone)

示例程序代码如下,在对话框下拉列表中选择的项内容将会保存在getText中。

    QString getText;QStringList defItem;QString dlgTitle = "选择项目";QString label = "请选择一个项目";defItem << "北京" << "上海" <<"天津" << "重庆";getText = QInputDialog::getItem(this, dlgTitle, label, defItem);ui->plainTextEdit->appendPlainText(getText);

程序运行之后将会弹出如下图所示的对话框
在这里插入图片描述

六、消息对话框

输入对话框通过QMessageBox类实现,根据不同的消息类型可以分为information消息、warning消息、critical消息、about消息、question消息。此处以critical消息、question消息为例进行介绍。

6.1、critical消息

此对话框将会弹出一个critical消息,其函数原型为:

int QMessageBox::critical(QWidget *parent, const QString &title, const QString &text, 		//消息内容int button0, 				//对话框上的按键int button1, int button2 = 0)

示例程序代码如下

    QString title = "critical消息";QString text = "错误(2704)";QMessageBox::critical(this, title, text, QMessageBox::Ok, 			//按键1为okQMessageBox::Cancel, 		//按键2为cancelQMessageBox::NoButton);	//没有按键3

程序运行之后将会弹出如下图所示的对话框
在这里插入图片描述

6.2、question消息

此对话框将会弹出一个question消息,其函数原型为:

int QMessageBox::question(QWidget *parent, const QString &title, const QString &text, 		//消息内容int button0, 				//对话框上的按键int button1, int button2 = 0)

示例程序代码如下

    QMessageBox::StandardButton retval;		//获取对话框中所按下的按键QString title = "question消息";QString text = "存在问题";retval = QMessageBox::question(this, title, text, QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel);ui->plainTextEdit->appendPlainText(QString::asprintf("%d", retval));

程序运行之后将会弹出如下图所示的对话框
在这里插入图片描述

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

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

相关文章

GUI编程--PyQt5--QWidget3 控件的交互

文章目录 控件是否可用控件是否可见编辑状态窗口的激活窗口关闭案例提示信息焦点操作 控件是否可用 obj.setEnabled(True) obj.isEnabled() 控件是否可见 显示与隐藏 本质是重新绘制所有的控件&#xff0c;从父控件依次到子控件。 obj.setVisible(True) 绘制图形 触发了pain…

Fdog系列(四):使用Qt框架模仿QQ实现登录界面,界面篇。

文章目录 一. 前言二. 正文1. 创建窗口&#xff0c;添加基本组件2. 自定义标题&#xff0c;隐藏任务栏标题&#xff0c;实现系统托盘显示3. 美化主界面&#xff0c;文本框的奇思妙想4. 实现背景阴影 一. 前言 Fdog系列已写目录&#xff1a; Fdog系列&#xff08;一&#xff0…

Qt之对话框(QDialog)

文章目录 一、对话框的概念二、与QWidget的区别三、对话框2种显示方法四、对话框返回值的概念本节示例 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、对话框的概念 对话框是和用户简短交互的一种窗口。如&#xff1a;登录界面&#xff0c;关于界…

《爱情公寓》电影,让我十年的情怀,一瞬间都喂了狗

点击上方“程序人生”&#xff0c;选择“置顶公众号” 第一时间关注程序猿&#xff08;媛&#xff09;身边的故事 作者 丁彦军 来源 恋习Python 如需转载&#xff0c;请联系原作者授权。 深陷抄袭之名、诉讼纠纷的《爱情公寓》终于上映了。 情怀粉们的力量不容小觑&#xff0c;…

长坡厚雪 一个智能手机的“大时代”迎面到来

作者 | 曾响铃 文 | 响铃说 “这是一个最好的时代&#xff0c;也是一个最坏的时代。 ” 在世界贸易关系、国际环境等不确定因素影响下&#xff0c;全球都蒙上了一层阴影。前不久召开的2023博鳌亚洲论坛主题就是“在不确定的世界中探寻确定性”&#xff0c;简单来说就是当前社…

《XP、面具框架玩机》小米手机玩机教程--菜鸟小回

《框架玩机》小米手机玩机教程 ChatGPT点击直接对话&#xff1a;小回公益GPT 注&#xff1a;刷机有风险&#xff0c;玩机需谨慎。 操作不当所造成后果与菜鸟小回无关&#xff01;&#xff01;&#xff01; 今天来分享小米手机玩机技巧&#xff0c;Magisk面具Xp框架! 可能你多上…

工程质量之研发过程管理需要关注的点

一、背景 作为程序猿&#xff0c;工程质量是我们逃不开的一个话题&#xff0c;工程质量高带来的好处多多&#xff0c;我在写这篇文章的时候问了一下CHATGPT&#xff0c;就当娱乐一下&#xff0c;以下是ChatGPT的回答&#xff1a; 1、提高产品或服务的可靠性和稳定性。高质量的系…

港联证券|存储概念再活跃,佰维存储盘中逼近涨停再创新高

存储概念11日盘中再度走强&#xff0c;截至发稿&#xff0c;佰维存储涨超19%&#xff0c;盘中迫临涨停再创上市以来新高&#xff0c;该股自上市以来累计大涨超500%&#xff1b;江波龙涨近15%盘中亦创出新高&#xff1b;此外&#xff0c;朗科科技涨近12%&#xff0c;同有科技涨近…

比尔盖茨:Web3没那么重要,元宇宙没革命性,人工智能最重要

1. 【比尔盖茨&#xff1a;Web3没那么重要&#xff0c;元宇宙没革命性&#xff0c;人工智能最重要】 微软联合创始人比尔•盖茨似乎与特斯拉CEO埃隆马斯克一样对元宇宙、Web3&#xff08;第三代互联网&#xff09;毫无兴趣。 当地时间1月12日&#xff0c;比尔•盖茨在美国社交新…

死磕数据库系列(二十二):MySQL 数据库机房架构与跨城容灾

点关注公众号&#xff0c;回复“1024”获取2TB学习资源&#xff01; 今天我将详细的为大家介绍 MySQL 数据库的机房架构与跨城容灾相关知识&#xff0c;希望大家能够从中收获多多&#xff01;如有帮助&#xff0c;请点在看、转发支持一波&#xff01;&#xff01;&#xff01; …

AI人工智能与机器人的探索和应用1.2

原文&#xff1a;https://mp.weixin.qq.com/s/Fpku8e1mvU1M7hOMV8rSnA chatgpt的火爆使用让人工智能掀起了新一轮的话题革命。当前的全球情况数据显示&#xff0c;人工智能、机器学习和机器人技术等创新产品几乎每个领域都普遍流行&#xff0c;无论是农业、医疗保健、教育、还…

一场云端的“神仙打架”:BAT加华为的影响未来之争

作者&#xff5c;震霆 出品&#xff5c;新芒X 公众号&#xff5c;GOwithAI Up in the Air &#xff01; 这是2009年上映的一部经典的电影名称&#xff0c;翻译成中文叫《在云端》&#xff0c;想必有不少人看过。 男主角因为工作性质成为空中飞人&#xff0c;穿梭在云…

全网最流氓还擦边的App,被华为封杀了!

&#x1f447;&#x1f447;关注后回复 “进群” &#xff0c;拉你进程序员交流群&#x1f447;&#x1f447; 来源丨程序员软件库 https://mp.weixin.qq.com/s/WFqu1mYYIiq8A-XNJgMA5Q ‍ 很多人下载APP&#xff0c;一般是用手机自带的应用商店&#xff0c;下载安装一条龙&…

华为推出打车平台 Petal,科技大厂再战聚合打车

作者|小满 声明|题图来源于网络。惊蛰研究所原创文章&#xff0c;文章转载自「惊蛰研究所」公众号。 沉寂许久的网约车市场&#xff0c;因为科技巨头的集体入局再次成为焦点。 7月27日&#xff0c;华为正式宣布上线聚合打车平台Petal出行&#xff0c;包括此前在微信内测打车服务…

腾讯VS华为:2021“渠道战争”第一枪

本文转载自 刺猬公社&#xff0c;作者 陈彬 2021年方才来临一个小时&#xff0c;华为与腾讯两大巨头就打了起来。 华为应用商店发布公告&#xff0c;宣布下架所有腾讯游戏&#xff0c;原因是“腾讯单方面就双方合作做出重大变更”。腾讯方很快做出回应&#xff0c;表明未能与华…

如果你还不知道什么是华为ICT大赛,你就OUT了!

&#xff08;小灰想象中的比赛现场&#xff09; ICT&#xff0c;全称Information Communications Technology。 华为ICT大赛是华为打造的面向全球大学生的年度例行ICT赛事&#xff0c;为华为ICT学院和有意愿成为ICT学院的高效学生提供国际化竞技和交流平台&#xff0c;增长学生…

华为内部推荐,比惨大会 (转载)

发信人: lansheng228 (大宅男), 信区: Joke 标 题: Re: 华为内部推荐&#xff0c;比惨大会 (转载) 发信站: 水木社区 (Thu Jul 17 18:50:26 2014), 站内 【 以下文字转载自 WorkLife 讨论区 】 发信人: diviner (diviner), 信区: WorkLife 标 题: Re: 华为内部推荐&#xf…

Tubi 快讯|中国团队 100 人啦

Tubi 中国团队 100 人啦 上周五&#xff0c;Tubi 迎来了中国团队的第 100 位同事&#xff01; 从最开始创立到 Tubi 中国团队第一次在公众号亮相&#xff0c;再到去年年底的关于 Tubi &#xff0c;你想知道的都在这里&#xff0c;Tubi 一路成长也一路收获&#xff0c;始终未变…

独家!华为、腾讯齐聚香港,一起密谋着什么?

4月17日&#xff0c;“TokenSky香港站 第16届TFC全球泛游戏大会”上主题为“游戏出海与未来链游之路”在香港科学园成功举办&#xff0c;现场座无虚席&#xff0c;全球游戏游戏研发商、发行商、渠道商、第三方等齐聚主会场&#xff0c;现场嘉宾就区块链游戏发展、游戏出海及变现…

第一波IT去美国化的公司不是华为

第一波去美国化的不是华为&#xff0c;是BAT京东等 互联网类公司发起的工程叫&#xff1a;去IOE IBM小型机&#xff0c;ORACLE数据库&#xff0c;EMC存储 几年前已经完成了技术去美化 趣讲大白话&#xff1a;安全是底线 【趣讲信息科技174期】 **************************** 第…