Qt提供的可复用的标准对话框,全部继承自QDialog类,如下图所示:

  • QMessageBox:信息对话框,用于显示信息、询问问题等;
  • QFileDialog:文件对话框
  • QColorDialog:颜色对话框
  • QInputDialog:输入对话框(允许用户输入一次数据)
  • QFontDialog:字体对话框
  • QProgressDialog:进度对话框
  • QPrintDialog:打印对话框
  • QPrintPreviewDialog:打印预览对话框
  • QPageSetupDialog:打印设置对话框,为打印机提供纸张相关的选项

标准对话框使用方式

QDialogType dialog(this); //对话框对象的定义

dialog.setPropertyxxxx(value); //对话框属性设置

if(dialog.exec() == QDialogType::vaule)
{
Type v = dialog.getDialogValue(); //获取对话框数据
//... ... 处理数据 }

QMessageBox消息对话框
代码如下:

#include <QtGui/QApplication>
#include <QDebug>
#include <QMessageBox>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMessageBox msg;
msg.setWindowTitle("Message");
msg.setText("This is Message content!");
msg.setIcon(QMessageBox::Information); //选择图标为:信息类型
msg.setStandardButtons(QMessageBox::Ok|QMessageBox::Cancel);
msg.setButtonText(QMessageBox::Ok,QString("确定"));
msg.setButtonText(QMessageBox::Cancel,QString("取消"));
if(msg.exec()==QMessageBox::Ok)
{
qDebug()<<"QMessageBox::Ok"; //当点击确定按钮,则会打印信息
}
return ;
}

效果:

也可以使用一个静态函数来创建消息对话框:

StandardButton QMessageBox::information(QWidget * parent, const QString & title, const QString & text, StandardButtons buttons = Ok, StandardButtondefaultButton = NoButton);
//显示信息对话框, 将显示一个反叹号图标 StandardButton QMessageBox::question(QWidget * parent, const QString & title, const QString & text, StandardButtons buttons = Ok, StandardButtondefaultButton = NoButton);
//显示问题对话框, 将显示一个问号图标 StandardButton QMessageBox::warning(QWidget * parent, const QString & title, const QString & text, StandardButtons buttons = Ok, StandardButtondefaultButton = NoButton);
//显示警告对话框, 将显示一个黄色叹号图标 StandardButton QMessageBox::critical(QWidget * parent, const QString & title, const QString & text, StandardButtons buttons = Ok, StandardButton defaultButton= NoButton);
//显示严重错误对话框, 将显示一个红色的错误符号

void QMessageBox::about(QWidget * parent, const QString & title, const QString & text);
//显示关于对话框,该对话框只有一个OK按钮

比如:

#include <QtGui/QApplication>
#include <QDebug>
#include <QMessageBox>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMessageBox msg;
int ret = msg.question(NULL,"Question","This is Message Question",QMessageBox::Ok|QMessageBox::Cancel);
if(ret==QMessageBox::Ok)
{
qDebug()<<"QMessageBox::Ok"; //当点击Ok按钮,则会打印qDebug
}
return ;
}

效果:

QFileDialog文件对话框
QFileDialog的exec()返回值为QFileDialog::Accepted或者QFileDialog::Rejected

需要以下成员函数:

setAcceptMode (QFileDialog::AcceptOpen);
//设置文本对话框是用来打开文件(AcceptOpen),还是用来保存文件(AcceptSave) setDirectory (const QString & directory ); //设置文本对话框路径 setFileMode ( FileMode mode );
//设置文本对话框打开的文件模式,是单个文件?还是多个文件?还是包括目录?
void  selectFile(const QString & filename);
        //预设置文件对话框默认打开的文件名
QStringList QFileDialog::selectedFiles();
//用来获取用户选择的多个 文件信息 位置(绝对路径),比如:"C:/Users/Administrator/Desktop/新建文本文档.txt" 
QString	selectedFilter();
      //获取用户选择的文件过滤器

文件类型过滤器
通过setFilter()成员函数实现,文件过滤器定义规则如下:

  • 显示名(*.后缀名1 *.后缀名2 ...*.后缀名n)

如果,有多个规则,则可以通过;;来隔开,例如:

setFilter("Image(*.jpg *.png *.bmp);;Text(*.txt);;All(*.*)"); 

以打开文件为例:

          QFileDialog dlg;

          dlg.setAcceptMode(QFileDialog::AcceptOpen);
dlg.setFileMode(QFileDialog::ExistingFile); //模式为:已存在的文件,如果为保存文件,则不需要指定模式
dlg.setFilter("Image(*.jpg *.png *.bmp);;Text(*.txt);;All(*.*)");
dlg.setDirectory("D:");
dlg.selectFile("新建文件.txt"); if(dlg.exec() == QFileDialog::Accepted)
{
QString Str=dlg.selectedFiles()[]; //获取用户选择的文件
QString filter = dlg.selectedFilter(); //获取用户选择的过滤器 qDebug()<<Str;
qDebug()<<filter;
}

也可以使用一个静态函数直接打开文件,或者保存文件:

QString QFileDialog::getOpenFileName (
QWidget * parent = , //父组件
const QString & caption = QString(), //标题
const QString & dir = QString(), //设置路径, .表示当前路径, /表示更目录
const QString & filter = QString(), //过滤器
QString * selectedFilter = , //用户选择文件后的过滤器信息
Options options = ); //参数,它的取值为enum QFileDialog::Option ,比如: QFileDialog::ShowDirsOnly (只显示目录)

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

QInputDialog输入对话框
QInputDialog的exec()返回值为QFileDialog::Accepted或者QFileDialog::Rejected
常用函数:

setLabelText ( const QString & text );              //设置对话框标签
setOkButtonText ( const QString & text ); //设置OK按钮文本
setCancelButtonText ( const QString & text ) //设置Cancel按钮文本
setInputMode ( InputMode mode); //设置输入模式,是文本,还是整数,还是浮点数
setIntRange( int min, int max ); //如果是整数模式,则该函数可以设置允许整数范围 setDoubleRange ( double min, double max ); //如果是浮点数模式,则该函数可以设置允许浮点数范围

QString textValue (); //返回文本模式的输入对话框返回值
int intValue (); //返回整数模式的输入对话框返回值
double doubleValue (); //返回浮点数模式的输入对话框返回值

示例:

QInputDialog log;
log.setInputMode(QInputDialog::TextInput);
log.setCancelButtonText("取消");
log.setOkButtonText("确定");
log.setWindowTitle("输入ID");
log.setLabelText("请输入ID");
if(log.exec()== QInputDialog::Accepted)
{
qDebug()<<log.textValue();
}

效果:

也可以使用一个静态函数实现输入对话框:

设置文本输入对话框:

QString QInputDialog::getText( QWidget * parent, //父组件
const QString & title,                 //窗口标题
const QString & label,                 //标签提示
QLineEdit::EchoMode mode = QLineEdit::Normal, //输入框模式
constQString & text = QString(),           //预定义的文本
bool * ok = ,                      //如果用户点击ok,则ok =true
Qt::WindowFlags flags = );

设置列表输入对话框:

QString QInputDialog::getItem ( QWidget * parent, //父组件
const QString & title, //窗口标题
const QString & label, //标签提示
const QStringList & items, //字符串链表,用来显示列表
int current = , //预定义,表示列表中第哪组
bool editable = true, //true表示列表可编译
bool * ok = , //如果用户点击ok,则ok =true
Qt::WindowFlags flags = )

除此之外还有:getDouble(),getInt();

以getItem()为例:

QStringList items;
items << "Spring" << "Summer" << "Fall"<< "Winter";
bool ok;
QString item = QInputDialog::getItem(, "QInputDialog::getItem()","Season:", items, , false, &ok);
if (ok && !item.isEmpty())
qDebug()<<item;

效果:

QColorDialog颜色对话框
QColorDialog的exec()返回值为QFileDialog::Accepted或者QFileDialog::Rejected

需要用到以下函数:

void setCurrentColor(const QColor & color )    //设置打开后的颜色对话框预定颜色
//它的取值可以为enum Qt::GlobalColor, 比如白色Qt::white
//也可以为QColor类, 比如QColor(100,100,100),表示RGB(100,100,100) QColor selectedColor(); //返回用户选择的哪个颜色,如果用户点击了退出,则返回的QColor::isValid()为false bool QColor::isValid(); //颜色有效返回true,无效则返回false

示例:

 QColorDialog dlg;
dlg.setCurrentColor(Qt::white); //预定义白色
dlg.exec();
QColor color=dlg.selectedColor();
if(color.isValid()) //如果用户选择了颜色
{
qDebug()<<color.red();
qDebug()<<color.green();
qDebug()<<color.blue();
}

也可以使用一个静态函数直接打开颜色对话框:

static QColor getColor(
const QColor &initial = Qt::white, //预定义颜色
QWidget *parent = ); //父组件

示例:

QColor color= QColorDialog::getColor(Qt::white);
if(color.isValid()) //如果用户选择了颜色
{
qDebug()<<color.red();
qDebug()<<color.green();
qDebug()<<color.blue();
}

QFontDialog字体对话框
QColorDialog的exec()返回值为QFileDialog::Accepted或者QFileDialog::Rejected

需要用到以下函数:

void setCurrentFont ( const QFont & font )    //设置打开后的字体对话框预定字体
//以"Courier New"字体为例,则参数填为font("Courier New",10,QFont::Bold,true);
//表示字体大小为10,加粗,斜体
QFont QFontDialog::selectedFont (); //返回用户选择的字体

示例:

int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  QWidget w;
  w.setFixedSize(,);
  QLabel label("This is QLabel!",&w);
  w.show();
  QFontDialog dlg(&w);
  dlg.setFont(label.font());
  if(dlg.exec()==QFontDialog::Accepted)
  {
    label.setFont(dlg.selectedFont());
    label.adjustSize();
  }
  return a.exec();
}

选择前-效果:

选择后-效果:

也可以使用一个静态函数直接打开字体对话框:

QFont QFontDialog::getFont( bool * ok, const QFont & initial, QWidget * parent,
const QString & title,FontDialogOptions options ) ;

QProgressDialog进度条对话框

常用函数:

setMinimum(int minimum);             //设置进度条最小值
setMaximum(int maximum);        //设置进度条最大值
setValue(int value);          //设置当前进度值
setAutoClose(bool close);        //设置自动关闭,如果进度值=最大值时,则会自动关闭对话框
setLabelText(const QString &text); //设置标签提示
setCancelButtonText(const QString &text); //设置Cancel按钮提示
setCancelButton(QPushButton *button); //从新自定义按钮框架,如果添NULL,则表示隐藏按钮
setBar( QProgressBar * bar ); //从新自定义进度条框架
setLabel ( QLabel * label ); //从新自定义标签

示例:

QProgressDialog dlg;
dlg.setMinimum();
dlg.setMaximum();
dlg.setValue();
dlg.setWindowTitle("Update");
dlg.setLabelText("Update... ...");
dlg.setCancelButtonText("取消");
dlg.exec();

效果:

也可以直接通过构造函数设置:

QProgressDialog ( const QString & labelText,
const QString & cancelButtonText,
int minimum,
int maximum,
QWidget * parent = ,
Qt::WindowFlags f = );

QPrintDialog打印机对话框

QPrinter类介绍:

  • QPrinter是打印设备及其参数的封装
  • QPrinter封装了系统中打印设备的驱动接口

试验:

  QPrintDialog printDialog;
if (printDialog.exec() == QDialog::Accepted)
{
  QPrinter *printer=printDialog.printer(); //获取Qprinter
  QTextDocument td;
  td.setPlainText("TEST TEST TEST"); //设置文本
  //printer->setOutputFileName("D:\\1.pdf"); //设置文件路径
  td.print(printer); //打印td
}

效果:

9.QT-标准对话框的更多相关文章

  1. 如何修改Qt标准对话框的文字(例如,英文改成中文)

    此篇文章参考qtcn论坛整理而成,因为文字和图片是本人亲自组织,所以仍算原创. http://www.qtcn.org/bbs/read-htm-tid-30650.html http://blog. ...

  2. 【Qt开发】Qt标准对话框之QMessageBox

    好久没有更新博客,主要是公司里面还在验收一些东西,所以没有及时更新.而且也在写一个基于Qt的画图程序,基本上类似于PS的东西,主要用到的是Qt Graphics View Framework.好了,现 ...

  3. Qt标准对话框按钮文字等设置为中文

    问题描述:QMessageBox.QColorDialog等标准对话框按钮显示都是英文 设置中文方法如下: 1)拷贝Qt安装目录下的qt_zh_CN.qm和qt_zh_CN.ts文件到工程目录中 2) ...

  4. Qt标准对话框之QColorDialog

    Qt中提供了一些标准的对话框,用于实现一些常用的预定义功能,比如本节中将要介绍的颜色对话框——QColorDialog. 在不同的系统平台下,颜色对话框的显示效果可能会有所不同,主要因系统主题风格而异 ...

  5. qt 标准对话框

    if (QMessageBox::Yes == QMessageBox::question(this, tr("Question"),                        ...

  6. Qt中的标准对话框之QMessageBox

    1. Qt标准对话框 Qt为开发者提供了一些可复用的对话框类型 Qt提供的可复用对话框全部继承自QDialog类 Qt中的对话框的使用方式和QDialog完全一致 2. 标准对话框的使用步骤 ①定义对 ...

  7. Qt 学习之路 2(15):标准对话框 QMessageBox

    Qt 学习之路 2(15):标准对话框 QMessageBox  豆子  2012年9月18日  Qt 学习之路 2  40条评论 所谓标准对话框,是 Qt 内置的一系列对话框,用于简化开发.事实上, ...

  8. QT+ 使用标准对话框+关于对话框+问题对话框+文件对话框

    #include "mainwindow.h" #include <QMenuBar> #include <QMenu> #include <QAct ...

  9. PyQt5标准对话框

    很全的Qt的标准对话框,包含QInputDialog.QColorDialog.QFontDialog.QMessageBox.QOpenFileDialog... 全部是由官网的C++版本,转换成P ...

  10. 《转》PyQt4 精彩实例分析* 实例2 标准对话框的使用

    和大多数操作系统一样,Windows及Linux都提供了一系列的标准对话框,如文件选择,字体选择,颜色选择等,这些标准对话框为应用程序提供了一致的观感.Qt对这些标准对话框都定义了相关的类.这些类让使 ...

随机推荐

  1. js正则表达语法

    /* *通过量词可以设置一个内容出现的次数 *量词只对它前边的一个内容起作用.所以在作用多个时需要用小括号()来向计算机说明这是一个整体. *-{n}代表正好出现n次. *-{m,n}出现了m-n次. ...

  2. JavaScript查找数组中最大的值

    // 查找一个数组中最大的数 // 定义一个方法 searchMax function searchMax(arr) { // 声明一个变量MaxNumber假设为数组中最大的值arr[0]; var ...

  3. kubernetes入门(07)kubernetes的核心概念(4)

    一.pod 二.Volume volume可以为容器提供持久化存储,比如 三.私有镜像 在使用私有镜像时,需要创建一个docker registry secret,并在容器中引用.创建docker r ...

  4. Docker学习笔记 - Docker的仓库

  5. spring-oauth-server实践:授权方式三:PASSWORD模式下 authorities:ROLE_{user.privillege}, ROLE_USER

    一.数据库配置 1.oauth_client_details 2.user_ 3.user_privillege 二.password模式 授权过程 1.授权者granter和请求参数 Resourc ...

  6. 学习ASP.NET Core Razor 编程系列五——Asp.Net Core Razor新建模板页面

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  7. Linux磁盘分区-rpm-yum

    一.磁盘分区 1.开启Linux系统前添加一块大小为15G的SCSI硬盘 2.开启系统,右击桌面,打开终端 3.为新加的硬盘分区,一个主分区大小为5G,剩余空间给扩展分区,在扩展分区上划分1个逻辑分区 ...

  8. 项目管理器 ProjectManager Beta 10 发布

    本次更新内容: 可以设置主界面是否显示表格线 去除了开发日志界面的表格线,看起来好像好看一些 修复主界面时间显示的问题 自定义问候语 修复习惯统计记录时间显示错误的问题 修复创建项目时间错误问题 增加 ...

  9. Hive:添加、删除分区

    添加分区: ', p_loctype='MHA'); 已经创建好的分区表: INFO : Loading partition {p_hour, p_city, p_loctype=MHA} INFO ...

  10. 换个视角来看git命令与代码库发生网络交互报错事件

    git的一系列命令中像 clone.pull.push等与代码库发生网络交互时,可能报下面的错误信息 fatal: remote error: CAPTCHA required Your Stash ...