QT学习总结-标准对话框

标准对话框

包括文件对话框,可进行文件的选择;颜色对话框,可对颜色进行选择;字体对话框,可对字体的样式进行选择;输入对话框,控制对不同的文字进行输入;消息对话框,包括信息提示框、询问提示框、警告提示框、错误提示框和帮助提示框。

一、文件对话框

创建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(
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值