1. 程式人生 > >QT開啟和儲存檔案對話方塊

QT開啟和儲存檔案對話方塊

使用QFileDialog可以呼叫當前系統的檔案對話方塊 包含標頭檔案:

#include <QFileDialog>

(1)檔案開啟對話方塊

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

第一個引數parent,用於指定父元件。注意,很多Qt元件的建構函式都會有這麼一個parent引數,並提供一個預設值0; 第二個引數caption,是對話方塊的標題; 第三個引數dir,是對話方塊顯示時預設開啟的目錄,"." 代表程式執行目錄,"/" 代表當前碟符的根目錄(Windows,Linux下/就是根目錄了),也可以是平臺相關的,比如"C:\“等; 第四個引數filter,是對話方塊的字尾名過濾器; 多個檔案使用空格分隔:比如我們使用"Image Files(.jpg .png)“就讓它只能顯示字尾名是jpg或者png的檔案。 多個過濾使用兩個分號分隔:如果需要使用多個過濾器,使用”;;"分割,比如"JPEG Files(

.jpg);;PNG Files(.png)”; 第五個引數selectedFilter,是預設選擇的過濾器; 第六個引數options,是對話方塊的一些引數設定,比如只顯示資料夾等等,它的取值是enum QFileDialog::Option,每個選項可以使用 | 運算組合起來。

如果我要想選擇多個檔案怎麼辦呢?Qt提供了getOpenFileNames()函式,其返回值是一個QStringList。你可以把它理解成一個只能存放QString的List,也就是STL中的list。

示例:

QString file_name = QFileDialog::getOpenFileName(this,
        tr("Open File"), 
        "",
        "", 
        0);
    if (!fileName.isNull())
    {
        //fileName是檔名
        ...
    }
    else{
        //點的是取消
        ...
    }

(2)檔案儲存對話方塊

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

示例:

QString fileName = QFileDialog::getSaveFileName(this,
        tr("Open Config"),
        "",
        tr("Config Files (*.ifg)"));

    if (!fileName.isNull())
    {
        //fileName是檔名
    }
    else
    {
        //點的是取消
    }