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,是控制元件的objectName;
第三個引數dir,是對話方塊顯示時預設開啟的目錄,"." 代表程式執行目錄,"/" 代表當前碟符的根目錄(Windows,Linux下/就是根目錄了),也可以是平臺相關的,比如"C:\\"等;
第四個引數filter,是對話方塊的字尾名過濾器;
多個檔案使用空格分隔:比如我們使用"Image Files(*.jpg *.png)"就讓它只能顯示字尾名是jpg或者png的檔案。
多個過濾使用兩個分號分隔:如果需要使用多個過濾器,使用";;"分割,比如"JPEG Files(*.jpg);;PNG Files(*.png)";
第五個引數selectedFilter,是預設選擇的過濾器;
第六個引數options,是對話方塊的一些引數設定,比如只顯示資料夾等等,它的取值是enum QFileDialog::Option,每個選項可以使用 | 運算組合起來。

返回值是一個QStringList

(2)讀取代開路徑下的檔案

File *_cdecl fopen(const char* _Filename, const char*_Mode)

第一引數是檔案路徑名。

第二個引數是讀取模式,如“r”代表只讀。

由於getOpenFileName()返回QString型,不能強制轉換成const char*,如下列:

QString filename=QFileDialog=getOpenFileName(this,tr("action"),"E:\\demo\\picture\\1.raw","Image file(*.bmp *.jpg)",0)
const char* ch;
QByteArray ba=filename.toLatin1();
ch=ba.data();
File * file=fopen(ch,"r");
fread(myImage,sizeof(unsigned char),515*512,file);
fclose(file);