QT学习笔记(五):Qt5的8种标准对话框示例

QT学习笔记(五):Qt5的8种标准对话框示例

  • 前言
    • 实例展示
    • 1.颜色对话框
    • 2.文件对话框
    • 3.字体对话框
    • 4.输入对话框
    • 5.消息对框
    • 6.进度对话框
    • 7.错误信息对话框
    • 8.向导对话框.

前言

QT 提供了常用的对话框类型,他们全部继承自QDialog类,并增加了自己的特色功能,比如颜色选择对话框、文件对话框、字体对话框、输入对话框、消息对框、错误信息对话框、进度对话框、向导对话框等,用户无需再自己设计这些常用的对话框,这样可以减少程序设计工作量。

实例展示

main.cpp 代码:

#include "mywidget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MyWidget w;w.setWindowTitle(QStringLiteral("八种标准对话框展示"));w.show();return a.exec();
}

mywidget.h 代码:

#include <QWidget>
class QErrorMessage; 					// 错误信息对话框类 前置声明
#include <QWizard>namespace Ui 
{
class MyWidget;
}class MyWidget : public QWidget
{Q_OBJECT
public:explicit MyWidget(QWidget *parent = 0);~MyWidget();
private slots:void on_pushButton_clicked();void on_pushButton_2_clicked();void on_pushButton_3_clicked();void on_pushButton_4_clicked();void on_pushButton_5_clicked();void on_pushButton_6_clicked();void on_pushButton_7_clicked();void on_pushButton_8_clicked();
private:Ui::MyWidget *ui;QErrorMessage *errordlg;QWizardPage *createPage1();        // 新添加QWizardPage *createPage2();        // 新添加QWizardPage *createPage3();        // 新添加
};

mywidget.cpp 头文件包含:

#include "mywidget.h"
#include "ui_mywidget.h"
#include <QDebug>				// 调试函数 头文件
#include <QColorDialog> 		// 1.颜色对话框 头文件
#include <QFileDialog>			// 2.文件对话框 头文件
#include <QFontDialog>			// 3.字体对话框 头文件
#include <QInputDialog>			// 4.输入对话框 头文件
#include <QMessageBox>			// 5.消息色对话框 头文件
#include <QProgressDialog>		// 6.进度条对话框 头文件	
#include <QErrorMessage>		// 7.错误信息对话框 头文件

运行界面展示:
在这里插入图片描述

1.颜色对话框

1)信号槽

// 颜色对话框
void MyWidget::on_pushButton_clicked()
{// 创建颜色对话框 并获取颜色(直接使用类的静态函数 获取color)
//    QColor color = QColorDialog::getColor(Qt::red, this, tr("颜色对话框"),QColorDialog::ShowAlphaChannel);// 创建颜色对话框对象QColorDialog dialog(Qt::red, this);                          // 创建对象dialog.setOption(QColorDialog::ShowAlphaChannel);            // 显示alpha选项dialog.exec();                                               // 以模态方式运行对话框QColor color = dialog.currentColor();                        // 获取当前颜色qDebug() << "color: " << color;								 // 调试信息输出
}

2)显示
在这里插入图片描述

2.文件对话框

1)信号槽

// 文件对话框
void MyWidget::on_pushButton_2_clicked()
{// 1、创建文件对话框 并获取文件名(直接使用类的静态函数 fileName)// getOpenFileName() 获取单个文件
//    QString fileName = QFileDialog::getOpenFileName(this, tr("文件对话框"),"D:", tr("图片文件(*.png *.jpg *.jpeg *.bmp *.tif *.tiff);;所有文件(*)"));
//    qDebug()<< "单个fileNames:" << fileName;// 2、getOpenFileNames() 获取多个文件QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("文件对话框"),"D:", tr("图片文件(*.png *.jpg *.jpeg *.bmp *.tif *.tiff);;所有文件(*)"));for (int i =0; i<fileNames.length();i++) // 逐行显示文件路径名{qDebug()<< "多个fileNames["<<i+1<<"]:"<< fileNames[i];}// 3、创建保存文件对话框 并获取保存的文件名(直接使用类的静态函数 fileName)QString filename = QFileDialog::getSaveFileName(this,tr("保存对话框"),"D:",tr("*.bmp;; *.png;; *.jpg;; *.tif;; *.GIF"));}

保存文件对话框设置代码:

QFileDialog *fileDialog = new QFileDialog(this);//创建一个QFileDialog对象,构造函数中的参数可以有所添加。
fileDialog->setWindowTitle(tr("Save As"));//设置文件保存对话框的标题
fileDialog->setAcceptMode(QFileDialog::AcceptSave);//设置文件对话框为保存模式
fileDialog->setFileMode(QFileDialog::AnyFile);//设置文件对话框弹出的时候显示任何文件,不论是文件夹还是文件
fileDialog->setViewMode(QFileDialog::Detail);//文件以详细的形式显示,显示文件名,大小,创建日期等信息;
//还有另一种形式QFileDialog::List,这个只是把文件的文件名以列表的形式显示出来
fileDialog->setGeometry(10,30,300,200);//设置文件对话框的显示位置
fileDialog->setDirectory(".");//设置文件对话框打开时初始打开的位置
fileDialog->setFilter(tr("Image Files(*.jpg *.png)"));//设置文件类型过滤器//注意使用的是QFileDialog::Accepted或者QDialog::Accepted,不是QFileDialog::Accept
if(fileDialog->exec() == QDialog::Accepted) // 对话框确定按钮被按下
{QString path = fileDialog->selectedFiles()[0];//得到用户选择的文件名filePath=listWidget_File->item(listWidget_File->currentRow())->text();//这个是得到在ListWidget中点击查看的图片,得到这个图片的名字filePath=QString("/media/sd/PICTURES")+filePath;//将路径和文件名连接起来QImage iim(filePath);//创建一个图片对象,存储源图片QPainter painter(&iim);//设置绘画设备QFile file(path);//创建一个文件对象,存储用户选择的文件if (!file.open(QIODevice::ReadWrite))//以只读的方式打开用户选择的文件,如果失败则返回{return;}    }//以流方式写入文件QByteArray ba;QBuffer buffer(&ba);buffer.open(QIODevice::WriteOnly);iim.save(&buffer, "JPG");//把图片以流方式写入文件缓存流中file.write(ba);//将流中的图片写入文件对象当中

在这里插入图片描述
2)

3.字体对话框

1)信号槽

// 字体对话框
void MyWidget::on_pushButton_3_clicked()
{// ok用于标记是否按下了“OK”按钮bool ok;QFont font = QFontDialog::getFont(&ok, this);// 如果按下“OK”按钮,那么让“字体对话框”按钮使用新字体// 如果按下“Cancel”按钮,那么输出信息if (ok)ui->pushButton_3->setFont(font);elseqDebug() << tr("没有选择字体,使用默认字体!");
}

2)显示
在这里插入图片描述

4.输入对话框

1)信号槽

// 输入对话框
void MyWidget::on_pushButton_4_clicked()
{bool ok;// 获取字符串QString string = QInputDialog::getText(this, tr("输入字符串对话框"),tr("请输入用户名:"), QLineEdit::Normal,tr("admin"), &ok);if(ok)qDebug() << "string:" << string;// 获取整数int value1 = QInputDialog::getInt(this, tr("输入整数对话框"),tr("请输入-1000到1000之间的数值"), 100, -1000, 1000, 10, &ok);if(ok)qDebug() << "value1:" << value1;// 获取浮点数double value2 = QInputDialog::getDouble(this, tr("输入浮点数对话框"),tr("请输入-1000到1000之间的数值"), 0.00, -1000, 1000, 2, &ok);if(ok)qDebug() << "value2:" << value2;// 获取条目QStringList items;items << tr("条目1") << tr("条目2")<< tr("条目3")<< tr("条目4");QString item = QInputDialog::getItem(this, tr("输入条目对话框"),tr("请选择或输入一个条目"), items, 0, true, &ok);if(ok)qDebug() << "item:" << item;
}

2)显示
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

5.消息对框

1)信号槽

// 消息对话框
void MyWidget::on_pushButton_5_clicked()
{// 问题对话框int ret1 = QMessageBox::question(this, tr("问题对话框"),tr("你了解Qt吗?"), QMessageBox::Yes, QMessageBox::No);if(ret1 == QMessageBox::Yes)qDebug() << tr("问题!");// 提示对话框int ret2 = QMessageBox::information(this, tr("提示对话框"),tr("这是Qt书籍!"), QMessageBox::Ok);if(ret2 == QMessageBox::Ok)qDebug() << tr("提示!");// 警告对话框int ret3 = QMessageBox::warning(this, tr("警告对话框"),tr("不能提前结束!"), QMessageBox::Abort);if(ret3 == QMessageBox::Abort)qDebug() << tr("警告!");// 错误对话框int ret4 = QMessageBox::critical(this, tr("严重错误对话框"),tr("发现一个严重错误!现在要关闭所有文件!"), QMessageBox::YesAll);if(ret4 == QMessageBox::YesAll)qDebug() << tr("错误");// 关于对话框QMessageBox::about(this, tr("关于对话框"), tr("yafeilinux致力于Qt及Qt Creator的普及工作!"));
}

2)显示
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

6.进度对话框

1)信号槽

// 进度对话框
void MyWidget::on_pushButton_6_clicked()
{QProgressDialog dialog(tr("文件复制进度"), tr("取消"), 0, 50000, this);dialog.setWindowTitle(tr("进度对话框"));                           // 设置窗口标题dialog.setWindowModality(Qt::WindowModal);                // 将对话框设置为模态dialog.show();for(int i=0; i<50000; i++)                                                // 演示复制进度{dialog.setValue(i);                                                         // 设置进度条的当前值(使进度条推进)QCoreApplication::processEvents();                              // 避免界面冻结if(dialog.wasCanceled())                                                // 按下取消按钮则中断break;}dialog.setValue(50000);    // 这样才能显示100%,因为for循环中少加了一个数qDebug() << tr("复制结束!");
}

2)显示结果
在这里插入图片描述

7.错误信息对话框

1)mywidget.h 成员变量添加:

private:QErrorMessage *errordlg;

2)mywidget.cpp 构造函数 MyWidget::MyWidget() 添加:

MyWidget::MyWidget(QWidget *parent) :QWidget(parent),ui(new Ui::MyWidget)
{errordlg = new QErrorMessage(this); // 添加
}

3)信号槽

// 错误信息对话框
void MyWidget::on_pushButton_7_clicked()
{errordlg->setWindowTitle(tr("错误信息对话框"));errordlg->showMessage(tr("这里是出错信息!"));
}

4)显示
在这里插入图片描述

8.向导对话框.

1)定义3个返回值为 QWizardPage 类对象指针的函数 createPage1(),createPage2(),createPage3():

// 向导页面1 创建函数
QWizardPage * MyWidget::createPage1()
{QWizardPage *page = new QWizardPage;page->setTitle(tr("介绍"));return page;
}
// 向导页面2
QWizardPage * MyWidget::createPage2()
{QWizardPage *page = new QWizardPage;page->setTitle(tr("用户选择信息"));return page;
}
// 向导页面3
QWizardPage * MyWidget::createPage3()
{QWizardPage *page = new QWizardPage;page->setTitle(tr("结束"));return page;
}

2)信号槽

// 向导对话框
void MyWidget::on_pushButton_8_clicked()
{QWizard wizard(this);wizard.setWindowTitle(tr("向导对话框"));wizard.addPage(createPage1());     // 添加向导页面wizard.addPage(createPage2());wizard.addPage(createPage3());wizard.exec();
}

3)显示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

张亚勤、刘慈欣、周鸿祎、王飞跃新书推荐,《崛起的超级智能:互联网大脑如何影响科技未来》...

《崛起的超级智能&#xff1a;互联网大脑如何影响科技未来》2019年7月由中信出版社出版&#xff0c;前沿科技趋势研究专家&#xff0c;计算机博士刘锋著。张亚勤、刘慈欣、周鸿祎、王飞跃、约翰翰兹推荐&#xff01;吕乃基、石勇、吕本富做序。《崛起的超级智能&#xff1a;互联…

ARM与RISC-V之争,后起之秀的优势在哪儿?

来源&#xff1a;朗锐智科从2010年夏天开始&#xff0c;伯克利研究团队大约花了四年的时间&#xff0c;设计和开发了一套完整的新的指令集。这个新的指令集叫做RISC-V&#xff0c;指令集从2014年正式发布之初就受到多方质疑&#xff0c;到2017年印度政府表示将大力资助基于RISC…

道阻且长,Libra 项目负责人长文回应一切质疑

来源&#xff1a;星球日报当地时间 7 月 3 日&#xff0c;Facebook Libra 项目负责人 David Marcus 于个人 Facebook 发布长文《Libra, 2 weeks in》&#xff0c;就过去两周 Libra 所遇到的一些质疑及误解进行解释。以下为全文内容&#xff1a;自 Libra 正式公开已经两周了&…

QT学习笔记(七):定时器事件的3种常用使用方式

QT学习笔记&#xff08;七&#xff09;&#xff1a;定时器事件的2种常用使用方式 Qt中定时器的使用有2种方法&#xff1a;一种是使用QObject类提供的定时器通过重载 timerEvent 事件处理过程函数&#xff0c;一种就是使用QTimer类。 其中QTimer 类来实现定时器使用的更多&…

LightOJ - 1140 How Many Zeroes?

Description Jimmy writes down the decimal representations of all natural numbers between and including m and n, (m ≤ n). How many zeroes will he write down? Input Input starts with an integer T (≤ 11000), denoting the number of test cases.Each case cont…

​机器学习算法优缺点对比及选择(汇总篇)

转自&#xff1a;机器学习与统计学本文的目的&#xff0c;是务实、简洁地盘点一番当前机器学习算法。文中内容结合了个人在查阅资料过程中收集到的前人总结&#xff0c;同时添加了部分自身总结&#xff0c;在这里&#xff0c;依据实际使用中的经验&#xff0c;将对此模型优缺点…

QT学习笔记(八):顺序容器和关联容器

QT学习笔记&#xff08;八&#xff09;&#xff1a;顺序容器和关联容器一、前言二、容器介绍2.1 顺序容器2.2 关联容器二、顺序容器示例三、关联容器一、前言 在Qt库中为我们提供了一系列的基于模板的容器类(container classes)。这些类可以被用来存储特定类型的项(items)。例…

页面的缓存与不缓存设置

HTML的HTTP协议头信息中控制着页面在几个地方的缓存信息&#xff0c;包括浏览器 端&#xff0c;中间缓存服务器端(如&#xff1a;squid等)&#xff0c;Web服务器端。本文讨论头信息 中带缓存控制信息的HTML页面(JSP/Servlet生成好出来的也是HTML页面)在中间缓存服务器中的缓存情…

QT学习笔记(九):遍历容器-迭代器(iterators)

QT学习笔记&#xff08;九&#xff09;&#xff1a;遍历容器-迭代器&#xff08;iterators&#xff09;遍历容器 &#xff1a;1、Jave风格:2、STL风格:3、foreach 关键字:遍历容器 &#xff1a; 遍历一个容器可以使用迭代器&#xff08;iterators&#xff09;完成&#xff0c;…

QT学习笔记(十):通用算法示例

QT学习笔记&#xff08;十&#xff09;&#xff1a;通用算法示例 std是C标准库统一使用的命名空间(namespace)的名称&#xff0c;C标准库中的名字全部都在std这个命名空间中,std也就是英文"standard"&#xff08;标准&#xff09;的缩写。 #include <QCoreAppl…

了解因果论:从珀尔的《为什么》开始

图I&#xff1a;AI从达特茅斯会议&#xff08;1956年&#xff09;得名至今已有六十年&#xff0c;期间几起几落&#xff0c;群星璀璨&#xff0c;像一个大舞台&#xff0c;你方唱罢我登场&#xff0c;留下了一些永载史册的理论和成就&#xff0c;但涉及因果的甚少作者&#xff…

外观模式(三层解耦)

说到外观模式&#xff0c;很容易想到的是设计一件漂亮的衣服然后穿上自己的身上&#xff0c;让自己看起来更加的漂亮&#xff0c;但是这个可能并不是这样子的&#xff0c;从更深层次的来说&#xff0c;外观更应该是所见即所得的&#xff0c;对于观众来说&#xff0c;看起来可能…

QT学习笔记(十一):QString类

QT学习笔记&#xff08;十一&#xff09;&#xff1a;QString类1、概述2、编辑操作3、查询操作3、转换操作1、概述 1.1 QString 类是 Qt 中用于表示字符串的类&#xff0c;实现在 QtCore 共享库中。QString 类在实现上有以下特征: 1&#xff09;字符串采用 Unicode 内部编码&…

人工智能六十年技术简史

作者 | 李理出品 | AI科技大本营&#xff08;rgznai100&#xff09;人类的进化发展史就是一部人类制造和使用工具的历史&#xff0c;不同的工具代表了人类的进化水平。从石器时代、铁器时代、蒸汽时代、电气时代再到现在的信息时代&#xff0c;我们使用更加先进便捷的工具来改变…

QT学习笔记(十二):透明窗体设置

QT学习笔记&#xff08;十二&#xff09;&#xff1a;透明窗体设置 创建 My_Widget 类 基类为QWidget &#xff0c; My_Widget.cpp 源文件中添加代码 #include "widget.h" #include "ui_widget.h"#include <QGraphicsDropShadowEffect>// 构造函数…

【新书】崛起的超级智能:互联网大脑如何影响科技未来

来源&#xff1a;刘锋的未来课堂2019年7月&#xff0c;《崛起的超级智能&#xff1a;互联网大脑如何影响科技未来》由中信出版社正式出版。作者刘锋。吕乃基、石勇、吕本富做序。张亚勤、刘慈欣、周鸿祎、王飞跃、约翰.翰兹等专家为这本书撰写了推荐语。《崛起的超级智能》主要…

OpenCV学习笔记(一):Win10(x64)+Qt5.8(MSVC2013)+OpenCV3.1.0配置过程

OpenCV学习笔记&#xff08;一&#xff09;&#xff1a;Win10(x64)Qt5.8(MSVC2013)OpenCV3.1.0配置过程 Win10(x64)Qt5.8(MSVC2013)OpenCV3.1.0配置过程 配置需求 原版 Win10(x64) Qt5.8(MSVC2013) OpenCV3.1.0 第一步&#xff1a;安装QT 5.8 和OpenCV3.1.0 并配置环境变量…

Windows10安装TeXlive和TeXstudio

参考https://blog.csdn.net/aiwei169/article/details/81431363 进入官网http://tug.org/texlive/ 第一步 第二步 第三步 第四步 等待 安装包下载 解压下载的文件&#xff0c;将解压后的安装包放在英文路径下&#xff08;即不要包含中文的路径&#xff09; 修改安装路径&am…

QT环境配置:QT5.8.0与VS2013环境配置

QT环境配置&#xff1a;QT5.8.0与VS2013环境配置 1、下载VS2013&#xff0c;QT5.8.0&#xff0c;qt-vs-tools-msvc2013-2.1.1。 1&#xff09;VS2013版本为&#xff1a;Visual Studio Ultimate 2013 2&#xff09;QT5.8.0版本为&#xff1a;qt-opensource-windows-x86-msvc20…