一.描述
QFileDialog提供了一个对话框,允许用户选择文件或者目录,也允许用户遍历文件系统,用以选择一个或多个文件或者目录。
QFileDialog继承了QDialog,具有父类的各种方法。
二.功能作用
1.最简单的获取方法(静态方法)
获取文件
QFileDialog::getOpenFileName() //获取一个打开文件的文件名
QFileDialog::getOpenFileNames() //获取多个打开文件的文件名
QFileDialog::getOpenFileUrl() //获取一个打开文件的统一资源定位符
QFileDialog::getOpenFileUrls() //获取多个打开文件的统一资源定位符
QFileDialog::getSaveFileName() //获取保存的文件名
QFileDialog::getSaveFileUrl() //获取保存的url
我们来演示一下:
m_fileDialog->getOpenFileName(this,"选择cpp文件","./","ALL(*.*)、Images(*.png *.jpg)、CPP文件(*.cpp)");
效果如图:
参数说明:
选择cpp文件—>文件对话框名
./—>路径
ALL(.)、Images(*.png .jpg)、CPP文件(.cpp)")—>文件过滤选项
打印的文件名:
获取文件夹
QFileDialog::getExistingDirectory()
QFileDialog::getExistingDirectoryUrl()
例:
QString dir_name = m_fileDialog->getExistingDirectory(this,"选择文件夹","./");
m_edit->append(dir_name);
2.接收模式
因为QFileDialog分为打开和保存两种模式,默认情况是打开文件的。但是我们也可以通过下面的代码把他设置成为保存模式的。
m_fileDialog->setAcceptMode(QFileDialog::AcceptOpen);
QFileDialog::AcceptOpen //打开模式
QFileDialog::AcceptSave //保存模式
3.默认后缀
如果我们希望文件名称是带有默认后缀的,可以用下面的方法
m_fileDialog->setDefaultSuffix(".h");
4.设置文件模式(文件/文件夹)
通过下面的方法可以设置要操作的对象是文件还是文件夹
QFileDialog::setFileMode(FileMode mode)
#QFileDialog::FileMode中FileMode枚举值
AnyFile 任意文件,无论是否存在
ExistingFile 已存在的文件
Directory 文件夹
ExistingFiles 0个或多个现有文件
DirectoryOnly 只能为目录
5.设置名称过滤器
m_fileDialog->setNameFilter("test");
6.信息显示的详细程度
m_fileDialog->setViewMode(QFileDialog::Detail);
m_fileDialog->setViewMode(QFileDialog::List);
7.打开对话框
打开对话框除了前面用的open()以外,还可以通过由返回值的exec()来使用(和父类QDialog的返回方法是一样的)
三、常用信号
void fileSelected(const QString &file);
void filesSelected(const QStringList &files);
void currentChanged(const QString &path);
void directoryEntered(const QString &directory);
void urlSelected(const QUrl &url);
void urlsSelected(const QList<QUrl> &urls);
void currentUrlChanged(const QUrl &url);
void directoryUrlEntered(const QUrl &directory);
void filterSelected(const QString &filter);