
Qt 19 标准对话框 -消息对话框QMessageBox ,文件选择对话框QFileDialog
发布日期:2021-05-07 13:26:08
浏览次数:16
分类:原创文章
本文共 5298 字,大约阅读时间需要 17 分钟。
QT 为开发者提供了一些可复用的对话框类型,这些可复用对话框全部继承自 QDialog类
QT中标准对话框遵循相同的使用方式:
/*定义对话框对象DialogType 对话框类型this ,指定当前对话框的父窗口*/DialogType dlg(this);/* 设置对话框属性*/dlg.setPropertyXXX(value)//以模态对框框的方式来使用if(dlg.exec() == DialogType::Value){//获取对话框数据Type v = dlg.getDialogValue();//处理对话框//...}
消息对话框 QMessageBox 用于提示重要的程序信息
1 为用户提示重要消息2 强制用户进行操作选择
消息对话框使用:
//构造消息对话框对象,指定父窗口QMessageBox msg(this)//设置消息对话框的相关属性msg.setWindowTitle("Message Title");//设置标题msg.setText("This is message content"); // 设置提示消息msg.setIcon(QMessageBox::Information); //设置图标 msg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);//设置 按钮OK 按钮Cancel// 以模态方式使用if(msg.exec() == QMessageBox::Ok){qDebug() << "Ok button is clicked!"}
QMessageBox中的实用函数
QMessageBox::questionQMessageBox::informationQMessageBox::warningQMessageBox::critical
QMessageBox::information
QMessageBox::information()可以替代这几行代码:
QMessageBox msg(this);msg.setWindowTitle("Window Title");//标题msg.setText("This is a detail message dialog!");//显示消息内容//设置图标,使用标准图标 通过 QMessageBox可以得到标准图标,使用Information这个图标msg.setIcon(QMessageBox::Information);//设置标准按钮 并显示三个按钮 OK,Cancel,YesToAllmsg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel | QMessageBox::YesToAll);
文件选择对话框 QFileDialog 用于获取系统中文件路径
Open Mode :应用程序需要用户打开一个外部的文件
Save Mode :应用程序中需要将当前内容存储于用户指定的外部文件中
使用:
//定义文件对话框,并指定父窗口QFileDialog fd(this);//设置属性,即 打开模式:AcceptOpen,保存模式:AcceptSavefd.setAcceptMode(QFileDialog :: AcceptOpen);//在打开模式下又分为两种模式: 选择单个文件(ExistingFile), 选择多个文件(ExistingFiles),fd.setFileMode(QFileDialog ::ExistingFile);// 以模态方式使用if(fd.exec() == QFileDialog ::Accepted){// 得到用户所选择的文件,使用 selectedFiles//返回值为QStringList链表 链表中信息 即所选择的文件: 文件路径+名文件路径+名QString fs = fd.selectedFiles();}
QFileDialog 中的实用函数
QFileDialog::getOpenFileNameQFileDialog::getOpenFileNamesQFileDialog::getSaveFileName
文件类型过滤器 setFilter
在文件对话框中可以通过文件后缀定义过滤器
过滤器规则:
显示名(*.后缀1 *.后缀2 *.后缀3 ... *.后缀N)如:“Image(*.png *.xpm *.jpg)”"Text(*.txt)""All(*.*)"
实验
Widget.h
#ifndef _WIDGET_H_#define _WIDGET_H_#include <QtGui/QWidget>#include <QPushButton>class Widget : public QWidget{ Q_OBJECTprivate: QPushButton SimpleMsgBtn;//消息对话框 QPushButton CustomMsgBtn; QPushButton OpenFileBtn; QPushButton SaveFileBtn;private slots: void SimpleMsgBtn_Clicked(); void CustomMsgBtn_Clicked(); void OpenFileBtn_Clicked(); void SaveFileBtn_Clicked();public: Widget(QWidget *parent = 0); ~Widget();};#endif
Widget.cpp
#include "Widget.h"#include <QDebug>#include <QMessageBox>#include <QFileDialog>Widget::Widget(QWidget *parent) : QWidget(parent), SimpleMsgBtn(this), CustomMsgBtn(this), OpenFileBtn(this), SaveFileBtn(this){ SimpleMsgBtn.setText("Simple Message Dialog"); SimpleMsgBtn.move(20, 20); SimpleMsgBtn.resize(160, 30); CustomMsgBtn.setText("Custom Message Dialog"); CustomMsgBtn.move(20, 70); CustomMsgBtn.resize(160, 30); OpenFileBtn.setText("Open File Dialog"); OpenFileBtn.move(20, 120); OpenFileBtn.resize(160, 30); SaveFileBtn.setText("Save File Dialog"); SaveFileBtn.move(20, 170); SaveFileBtn.resize(160, 30); resize(200, 220); setFixedSize(200, 220); connect(&SimpleMsgBtn, SIGNAL(clicked()), this, SLOT(SimpleMsgBtn_Clicked())); connect(&CustomMsgBtn, SIGNAL(clicked()), this, SLOT(CustomMsgBtn_Clicked())); connect(&OpenFileBtn, SIGNAL(clicked()), this, SLOT(OpenFileBtn_Clicked())); connect(&SaveFileBtn, SIGNAL(clicked()), this, SLOT(SaveFileBtn_Clicked()));}//创建消息对话框void Widget::SimpleMsgBtn_Clicked(){ //创建消息对话框并指定父窗口是当前 Widget QMessageBox msg(this); msg.setText("This is a message dialog!"); msg.exec();}//创建消息对话框 并设置图标和标准按钮void Widget::CustomMsgBtn_Clicked(){ //创建消息对话框并指定父窗口是当前 Widget QMessageBox msg(this); msg.setWindowTitle("Window Title");//标题 msg.setText("This is a detail message dialog!");//显示消息内容 //设置图标,使用标准图标 通过 QMessageBox可以得到标准图标,使用Information这个图标 msg.setIcon(QMessageBox::Information); //设置标准按钮 并显示三个按钮 OK,Cancel,YesToAll msg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel | QMessageBox::YesToAll); //以模态方式使用 if( msg.exec() == QMessageBox::Ok ) { qDebug() << "Ok button is clicked!"; }}//打开模式的文件选择对话框void Widget::OpenFileBtn_Clicked(){ //定义文件对话框,并指定父窗口 QFileDialog dlg(this); //设置属性,即 打开模式:AcceptOpen,保存模式:AcceptSave dlg.setAcceptMode(QFileDialog::AcceptOpen); //文件过滤 dlg.setFilter("Text(*.txt)"); //模式为 选择多个文件(ExistingFiles), dlg.setFileMode(QFileDialog::ExistingFiles); //如果用户点击OK if( dlg.exec() == QFileDialog::Accepted ) { // 得到用户所选择的文件,使用 selectedFiles 返回值为QStringList链表 QStringList fs = dlg.selectedFiles(); //打印链表中信息 即所选择的文件: 文件路径+名 for(int i=0; i<fs.count(); i++) { qDebug() << fs[i]; } }}//保存模式的文件选择对话框void Widget::SaveFileBtn_Clicked(){ QFileDialog dlg(this); //设置属性,即 打开模式:AcceptOpen,保存模式:AcceptSave dlg.setAcceptMode(QFileDialog::AcceptSave); dlg.setFilter("Text(*.txt)"); if( dlg.exec() == QFileDialog::Accepted ) { QStringList fs = dlg.selectedFiles(); for(int i=0; i<fs.count(); i++) { qDebug() << fs[i]; } }}Widget::~Widget(){ }
main.cpp
#include <QtGui/QApplication>#include "Widget.h"int main(int argc, char *argv[]){ QApplication a(argc, argv); Widget w; w.show(); return a.exec();}
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年04月10日 05时36分08秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
清除默认样式
2019-03-04
Eclipse JSP 设置中文编码
2019-03-04
Matlab 一维插值
2019-03-04
Android Dialog 普通对话框 单选对话框 多选对话框
2019-03-04
Android 联合ViewPager 与 Fragment
2019-03-04
python 函数的递归
2019-03-04
2.4 大电路静态工作点的稳定
2019-03-04
汉诺塔 C++实现【STL stack】
2019-03-04
数据结构——链表
2019-03-04
数据结构学习笔记(第二章:线性表)
2019-03-04
[数据结构与算法]链表逆置与遍历
2019-03-04