QT文件读写操作笔记

补一下这部分的笔记 简单的东西也记一下

 

 

 

 

操作系统一般都会提供一些列的标准对话框,如文件选择、字体选择、颜色选择等,这些标准对话框为应用层序提供了一致的观感。Qt对这些标准对话框都定义了相关的类,如:QFileDialog、QFontDialog、QColorDialog、QInputDialog、QMessageBox、QPrintDialog、QErrorMessage、QProgressDialog

 

 

QFileDialog

QFileDialog类是用于打开和保存文件的标准对话框。 QFileDialog类继承QDialog类;

QFileDialog在打开文件时使用了文本过滤器,用于显示指定扩展名的文件。也可以设置使用QFileDialog打开文件时的起始目录和指定扩展名的文件。

 

使用QFileDialog有两种方法,一种是比较简单的使用“静态函数法”,另一种是可以自定义各个细节的“构造函数法”

官网手册:

 

QString    getExistingDirectory(QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), Options options = ShowDirsOnly)
QUrl    getExistingDirectoryUrl(QWidget * parent = 0, const QString & caption = QString(), const QUrl & dir = QUrl(), Options options = ShowDirsOnly, const QStringList & supportedSchemes = QStringList())
QString    getOpenFileName(QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0)
QStringList    getOpenFileNames(QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0)
QUrl    getOpenFileUrl(QWidget * parent = 0, const QString & caption = QString(), const QUrl & dir = QUrl(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0, const QStringList & supportedSchemes = QStringList())
QList<QUrl>    getOpenFileUrls(QWidget * parent = 0, const QString & caption = QString(), const QUrl & dir = QUrl(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0, const QStringList & supportedSchemes = QStringList())
QString    getSaveFileName(QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0)
QUrl    getSaveFileUrl(QWidget * parent = 0, const QString & caption = QString(), const QUrl & dir = QUrl(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0, const QStringList & supportedSchemes = QStringList())

 

 

 

函数:

getOpenFileName

比如这里我在triggered()中使用getOpenFileName

 


#include "mainwindow.h"
#include "ui_mainwindow.h"


#include <QTextCodec>
#include <QFileDialog>
#include <QString>
#include <QDebug>
#include <QByteArray>
#include <string.h>
#define cout qDebug()




void
MainWindow::on_actiondakai_2_triggered() { QString fileName = QFileDialog::getOpenFileName(); cout<<"====="<<fileName<<"========"; }

 

 

 

 

 

 

 

getExistingDirectory

void MainWindow::on_actiondakai_2_triggered()
{
//    QString fileName = QFileDialog::getOpenFileName();
    QString fileName = QFileDialog::getExistingDirectory(NULL,"caption",".");
     cout<<"====="<<fileName<<"========";

}

 

 

 

其他方法 大同小异不再叙述。

 

getExistingDirectoryUrl
和getExistingDirectory类似,功能也是获取文件夹路径,最大的区别在于参数里的路径是QUrl类型,这为用户提供了选择远程目录的能力。

 

getOpenFileUrl

获取远程文件
为用户提供了获取远程文件路径的能力

 

getOpenFileUrls

获取多个远程文件
可以得到多个远程文件路径

 

getOpenFileNames

获取多个本地文件

 

 

getSaveFileName

保存本地文件对话框

 

getSaveFileUrl

保存远程文件对话框

 

 

 

 

 

 

 

 

除了静态函数 还可以利于构造函数自定义打开文件的细节

构造一个QFileDialog对象:

QFileDialog fd;

 

设置是打开还是保存文件对话框 AcceptMode

fd.setAcceptMode(QFileDialog::AcceptOpen);//文件对话框为打开类型

fd.setAcceptMode(QFileDialog::AcceptSave);//文件对话框为保存类型

 

 

设置对话框显示信息的详细程度

fd.setViewMode(QFileDialog::Detail);//详细
fd.setViewMode(QFileDialog::List);//仅列表

 

 

设置对话框返回

fd.setFileMode(QFileDialog::AnyFile);//文件名,无论是否存在

fd.setFileMode(QFileDialog::ExistingFile);//存在的,单个文件名

fd.setFileMode(QFileDialog::Directory);//文件夹名

fd.setFileMode(QFileDialog::ExistingFiles);//多文件

 

 

设置标题

fd.setWindowTitle("标题");

 

设置默认后缀

fd.setDefaultSuffix("txt");

 

 

 

获取对话框中的目录地址

QDir dir = fd.directory();qDebug() << dir;

 

 

返回文件图标提供者 

QFileIconProvider * QFileDialog::iconProvider() const 

 

 

设置历史目录setHistory

    QStringList dirLIst;
    dirLIst << "C:\\Intel" ;//添加了个路径
 
    fileDlg->setHistory(dirLIst);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章