标准对话框
包括文件对话框,可进行文件的选择;颜色对话框,可对颜色进行选择;字体对话框,可对字体的样式进行选择;输入对话框,控制对不同的文字进行输入;消息对话框,包括信息提示框、询问提示框、警告提示框、错误提示框和帮助提示框。
一、文件对话框
创建dialog类继承于QDialog类,通过点击按钮,弹出对话框进行文件选择。
dialog.h:
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QPushButton>
#include <QGridLayout>
#include <QTextLine>
#include <QLineEdit>
QT_BEGIN_NAMESPACE
namespace Ui {
class Dialog; }
QT_END_NAMESPACE
class Dialog : public QDialog
{
Q_OBJECT
public:
Dialog(QWidget *parent = nullptr);
~Dialog();
private slots:
void loadFile();
private:
Ui::Dialog *ui;
QPushButton *fileBtn; //文件按鈕
QLineEdit *fileUrl; //存文件路勁
QGridLayout *myLayout; //佈局
};
#endif // DIALOG_H
dialog.cpp:
#include "dialog.h"
#include "ui_dialog.h"
#include <QFileDialog>
#include <QDebug>
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
, ui(new Ui::Dialog)
{
ui->setupUi(this);
fileBtn = new QPushButton("點擊選擇文件");
fileUrl = new QLineEdit;
myLayout = new QGridLayout(this);
myLayout->addWidget(fileBtn,0,0);
myLayout->addWidget(fileUrl,0,1);
connect(fileBtn,&QPushButton::clicked,this,&Dialog::loadFile);
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::loadFile()
{
//打开一个文件
// QString path = QFileDialog::getOpenFileName(this,"標準對話框",".","c++(*.cpp);;c file(*.c);;header(*.h)");
//打开多个文件
// QStringList strList = QFileDialog::getOpenFileNames(this,"選擇多個文件",".","c++(*.cpp);;c file(*.c);;header(*.h)");
//选择保存一个文件
// QString path = QFileDialog::getSaveFileName(this,"保存文件",".","c++(*.cpp);;c file(*.c);;header(*.h)");
//打开已有目录
// QString path = QFileDialog::getExistingDirectory(this,"打開已有的目錄",".");
//选择一个文件,可支持远程网络文件
QUrl url = QFileDialog::getOpenFileUrl(this,"保存文件",QUrl(""),"c++(*.cpp);;c file(*.c);;header(*.h)");
// QString path;
// foreach(QString str,strList){
// path += str;
// fileUrl->setText(path);
// }
// fileUrl->setText(path);
qDebug() << url;
}
其中常用的有getOpenFileName、getOpenFileNames、getSaveFileName、getExistingDirectory、getOpenFileUrl方法。
1.1 getOpenFileName
调用这个方法,文件提示框中可以进行选择一个文件。
//parent:在哪个组件上显示,一般为this,在当前窗体组件显示
//caption:对话框标题
//dir:一般为"."
//filter:过滤文件类型,多种类型间用;;隔开
static QString getOpenFileName(QWidget *parent = nullptr,
const QString &caption = QString(),
const QString &dir = QString(),
const QString &filter = QString(),
QString *selectedFilter = nullptr,
Options options = Options());
1.2 getOpenFileNames
文件提示框中可以同时选择多个文件。
//parent:在哪个组件上显示,一般为this,在当前窗体组件显示
//caption:对话框标题
//dir:一般为"."
//filter:过滤文件类型,多种类型间用;;隔开
static QString getOpenFileNames(QWidget *parent = nullptr,
const QString &caption = QString(),
const QString &dir = QString(),
const QString &filter = QString(),
QString *selectedFilter = nullptr,
Options options = Options());
1.3 getSaveFileName
可选择一个目录进行文件的保存。
//parent:在哪个组件上显示,一般为this,在当前窗体组件显示
//caption:对话框标题
//dir:一般为"."
//filter:过滤文件类型,多种类型间用;;隔开
static QString getSaveFileName(QWidget *parent = nullptr,
const QString &caption = QString(),
const QString &dir = QString(),
const QString &filter = QString(),
QString *selectedFilter = nullptr,
Options options = Options());
1.4 getExistingDirectory
选择一个已存在的目录。
//parent:在哪个组件上显示,一般为this,在当前窗体组件显示
//caption:对话框标题
//dir:一般为"."
static QString getExistingDirectory(QWidget *parent = nullptr,
const QString &caption = QString(),
const QString &dir = QString(),
Options options = ShowDirsOnly);
1.5 getOpenFileUrl
选择一个文件,可以是远程网络文件。
//parent:在哪个组件上显示,一般为this,在当前窗体组件显示
//caption:对话框标题
//dir:为寻找的文件路径
//filter:过滤文件类型,多种类型间用;;隔开
static QUrl getOpenFileUrl(QWidget *parent = nullptr,
const QString &caption = QString(),
const QUrl &dir = QUrl(),
const QString &filter = QString(),
QString *selectedFilter = nullptr,
Options options = Options(),
const QStringList &supportedSchemes = QStringList());
二、颜色对话框
在dialog类中添加按钮,通过点击按钮,弹出颜色对话框进行颜色选择。
2.1 getColor
颜色对话框常用的方法为getColor,返回类型为QColor,
参数1:默认选中的颜色;参数2:显示的窗体组件,参数3:对话框标题
dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QPushButton>
#include <QGridLayout>
#include <QTextLine>
#include <QLineEdit>
#include <QFrame>
#include "message.h"
QT_BEGIN_NAMESPACE
namespace Ui {
class Dialog; }
QT_END_NAMESPACE
class Dialog : public QDialog
{
Q_OBJECT
public:
Dialog(QWidget *parent = nullptr);
~Dialog();
private slots:
void loadFile();
void loadMsg();
void loadMyMsg();
private:
Ui::Dialog *ui;
QPushButton *fileBtn; //文件按鈕
QLineEdit *fileUrl; //存文件路勁
QPushButton *colBtn; //颜色按钮
QFrame *color; //填充颜色
QGridLayout *myLayout; //佈局
};
#endif // DIALOG_H
dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
#include <QFileDialog>
#include <QDebug>
#include <QColorDialog>
#include <QColor>
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
, ui(new Ui::Dialog)
{
ui->setupUi(this);
fileBtn = new QPushButton("點擊選擇文件");
fileUrl = new QLineEdit;
myLayout = new QGridLayout(this);
myLayout->addWidget(fileBtn,0,0);
myLayout->addWidget(fileUrl,0,1);
connect(fileBtn,&QPushButton::clicked,this,&Dialog::loadFile);
//颜色对话框
colBtn = new QPushButton("点击选择颜色");
color = new QFrame;
color->setFrameStyle(QFrame::Box); //设置为盒子风格
color->setAutoFillBackground(true); //设置可进行颜色填充
myLayout->addWidget(colBtn,1,0);
myLayout->addWidget(color,1,1);
connect(colBtn,&QPushButton::clicked,this,&Dialog::loadColor);
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::loadFile()
{
//略。。。。
}
void Dialog::loadColor()
{
//getColor返回类型为QColor
//参数1:默认选中的颜色;参数2:显示的窗体组件,参数3:对话框标题
QColor col = QColorDialog::getColor(Qt::yellow,this,"颜色");
color->setPalette(