C/C++|C/C++ Qt Dialog 对话框组件应用
在Qt中对话框分为两种形式,一种是标准对话框,另一种则是自定义对话框,在一般开发过程中标准对话框使用是最多的了,标准对话框一般包括 QMessageBox,QInputDialog,QFileDialog 这几种,这里我将总结本人在开发过程中常用到的标准对话框的使用技巧。
Qt框架下,常用的标准对话框有下面这几种:
- QMessageBox 提示信息框
- QInputDialog 基本输入对话框(文本输入,整数输入,浮点数输入,单选框输入)
- QFileDialog 文件选择对话框(选择文件,多选文件,保存文件)
QMessageBox 消息弹窗: 消息对话框用于提示用户,常见的有四种分别是:提示,警告,错误,确认,代码归纳如下所示。
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{
ui->setupUi(this);
}MainWindow::~MainWindow()
{
delete ui;
}// By : LyShark
// https://www.cnblogs.com/lyshark
// 弹出各种MessageBox
void MainWindow::on_pushButton_clicked()
{
QString dlgTitle="消息框";
QString strInfo="文件已被修改,是否保存修改 ?";
QMessageBox::StandardButton defaultBtn = QMessageBox::NoButton;
// 缺省按钮
QMessageBox::StandardButton result;
// 返回选择的按钮// 弹窗分类 Question information warning critical
result=QMessageBox::question(this, dlgTitle, strInfo,QMessageBox::Yes|QMessageBox::No |QMessageBox::Cancel,defaultBtn);
if (result==QMessageBox::Yes)
ui->plainTextEdit->appendPlainText("Question消息框: Yes 被选择");
else if(result==QMessageBox::No)
ui->plainTextEdit->appendPlainText("Question消息框: No 被选择");
else if(result==QMessageBox::Cancel)
ui->plainTextEdit->appendPlainText("Question消息框: Cancel 被选择");
else
ui->plainTextEdit->appendPlainText("Question消息框: 无选择");
}// 弹出关于提示
void MainWindow::on_pushButton_2_clicked()
{
QString dlgTitle="about 消息框";
QString strInfo="我开发的数据查看软件 V1.0 \n 保留所有版权";
QMessageBox::about(this, dlgTitle, strInfo);
}
文章图片
QMessageBox 退出事件: 弹窗组件还可以配合QCloseEvent实现事件通知机制,例如当窗体被关闭则提示用户是否关闭窗体。
#include "mainwindow.h"
#include "ui_mainwindow.h"#include
#include MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{
ui->setupUi(this);
}// 窗口关闭时询问是否退出
void MainWindow::closeEvent(QCloseEvent *event)
{
QMessageBox::StandardButton result=QMessageBox::question(this, "确认", "确定要退出本程序吗?",
QMessageBox::Yes|QMessageBox::No |QMessageBox::Cancel,
QMessageBox::No);
if (result==QMessageBox::Yes)
event->accept();
else
event->ignore();
}// By : LyShark
// https://www.cnblogs.com/lyshark
MainWindow::~MainWindow()
{
delete ui;
}
文章图片
QInputDialog 对话框: 该对话框长用于输入一段特殊的文本,浮点数,或者选择一个列表框中的选项,该功能用于简单的用户交互场景。
#include "mainwindow.h"
#include "ui_mainwindow.h"#include
#include MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{
ui->setupUi(this);
}MainWindow::~MainWindow()
{
delete ui;
}// 文本输入对话框
void MainWindow::on_pushButton_clicked()
{
QString dlgTitle="输入文字对话框";
QString txtLabel="请输入文件名";
QString defaultInput="新建文件.txt";
QLineEdit::EchoMode echoMode=QLineEdit::Normal;
// 正常文字输入
// QLineEdit::EchoMode echoMode=QLineEdit::Password;
// 密码输入bool flag = false;
QString text = QInputDialog::getText(this, dlgTitle,txtLabel, echoMode,defaultInput, &flag);
if (flag && !text.isEmpty())
{
ui->plainTextEdit->appendPlainText(text);
}
}// 整数数值输入对话框
// By : LyShark
// https://www.cnblogs.com/lyshark
void MainWindow::on_pushButton_2_clicked()
{
QString dlgTitle="输入整数对话框";
QString txtLabel="设置字体大小";
int defaultValue=https://www.it610.com/article/ui->plainTextEdit->font().pointSize();
// 现有字体大小
int minValue=https://www.it610.com/article/6, maxValue=50, stepValue=1;
// 范围(步长)
bool flag=false;
int inputValue = QInputDialog::getInt(this, dlgTitle,txtLabel,defaultValue, minValue,maxValue,stepValue,&flag);
if (flag)
{
QFont font=ui->plainTextEdit->font();
font.setPointSize(inputValue);
ui->plainTextEdit->setFont(font);
}
}// 浮点数输入对话框
void MainWindow::on_pushButton_3_clicked()
{
QString dlgTitle="输入浮点数对话框";
QString txtLabel="输入一个浮点数";
float defaultValue=https://www.it610.com/article/3.13;
float minValue=0, maxValue=10000;
// 范围
int decimals=2;
// 小数点位数bool flag=false;
float inputValue = QInputDialog::getDouble(this, dlgTitle,txtLabel,defaultValue, minValue,maxValue,decimals,&flag);
if (flag)
{
QString str=QString::asprintf("输入了一个浮点数:%.2f",inputValue);
ui->plainTextEdit->appendPlainText(str);
}
}// 单选框条目选择对话框
void MainWindow::on_pushButton_4_clicked()
{
QStringList items;
// 列表内容
items <<"优秀"<<"良好"<<"合格"<<"不合格";
// 放入列表QString dlgTitle="条目选择对话框";
QString txtLabel="请选择级别";
int curIndex=0;
//初始选择项
bool editable=false;
// 是否可编辑
bool flag=false;
QString text = QInputDialog::getItem(this, dlgTitle,txtLabel,items,curIndex,editable,&flag);
if (flag && !text.isEmpty())
{
ui->plainTextEdit->appendPlainText(text);
}
}
文章图片
QFileDialog 对话框: 该对话框用于对文本的操作,例如打开文件,保存文件,选择文件夹等,当点击选择后,对话框会自动提取出文件路径。
#include "mainwindow.h"
#include "ui_mainwindow.h"#include MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{
ui->setupUi(this);
}MainWindow::~MainWindow()
{
delete ui;
}// 选择单个文件对话框
void MainWindow::on_pushButton_clicked()
{
QString curPath=QDir::currentPath();
// 获取系统当前目录
//QStringcurPath=QCoreApplication::applicationDirPath();
// 获取应用程序的路径
QString dlgTitle="选择一个文件";
// 对话框标题
QString filter="文本文件(*.txt);
;
图片文件(*.jpg *.gif *.png);
;
所有文件(*.*)";
// 文件过滤器QString aFileName=QFileDialog::getOpenFileName(this,dlgTitle,curPath,filter);
if (!aFileName.isEmpty())
{
ui->plainTextEdit->appendPlainText(aFileName);
}
}// 选择多个文件对话框
// By : LyShark
// https://www.cnblogs.com/lyshark
void MainWindow::on_pushButton_2_clicked()
{
// QString curPath=QCoreApplication::applicationDirPath();
// 获取应用程序的路径
QString curPath=QDir::currentPath();
// 获取系统当前目录
QString dlgTitle="选择多个文件";
// 对话框标题
QString filter="文本文件(*.txt);
;
图片文件(*.jpg *.gif *.png);
;
所有文件(*.*)";
// 文件过滤器QStringList fileList=QFileDialog::getOpenFileNames(this,dlgTitle,curPath,filter);
for (int i=0;
iplainTextEdit->appendPlainText(fileList.at(i));
}
}// 选择文件夹
void MainWindow::on_pushButton_3_clicked()
{
QString curPath=QCoreApplication::applicationDirPath();
// 获取应用程序的路径
// QString curPath=QDir::currentPath();
// 获取系统当前目录// 调用打开文件对话框打开一个文件
QString dlgTitle="选择一个目录";
// 对话框标题
QString selectedDir=QFileDialog::getExistingDirectory(this,dlgTitle,curPath,QFileDialog::ShowDirsOnly);
if (!selectedDir.isEmpty())
{
ui->plainTextEdit->appendPlainText(selectedDir);
}
}// 保存文件对话框
void MainWindow::on_pushButton_4_clicked()
{
QString curPath=QCoreApplication::applicationDirPath();
// 获取应用程序的路径
QString dlgTitle="保存文件";
// 对话框标题
QString filter="文本文件(*.txt);
;
h文件(*.h);
;
C++文件(.cpp);
;
所有文件(*.*)";
// 文件过滤器
QString aFileName=QFileDialog::getSaveFileName(this,dlgTitle,curPath,filter);
if (!aFileName.isEmpty())
{
ui->plainTextEdit->appendPlainText(aFileName);
}
}
【C/C++|C/C++ Qt Dialog 对话框组件应用】
文章图片
推荐阅读
- opencv|opencv C++模板匹配的简单实现
- C语言学习|第十一届蓝桥杯省赛 大学B组 C/C++ 第一场
- c++基础概念笔记
- 牛逼!C++开发的穿越丛林真人游戏,游戏未上线就有百万人气
- C++Primer之|C++Primer之 函数探幽
- c/c++|有感 Visual Studio 2015 RTM 简介 - 八年后回归 Dot Net,终于迎来了 Mvc 时代,盼走了 Web 窗体时代...
- QML基础信息
- C++-类型转换
- MongoDB|MongoDB - 简介
- C++面试题目总结