最简单的方式是使用静态函数
QString getExistingDirectory(QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), Options options = ShowDirsOnly)
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)
QString getSaveFileName(QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0)
如果想要和对话框交互,并且获取用户选择的文件名或者目录,这种方式最简单并且行之有效。自动弹出,选中之后自动销毁该文件对话框,然后只需要保存函数的返回值即可
3. 关键概念
3.1. 创建对话框
fileName = QFileDialog::getOpenFileName(this, tr("Open Image"), "/home/jana", tr("Image Files (*.png *.jpg *.bmp)"));
把该代码放入程序中,当程序运行到此处时,会直接弹出一个对话框,用户勾选了文件之后,对话框会销毁,而fileName会保存勾选文件的名称,就像在调用一个函数一样。
3.1.1. parent
this第一个参数,如果parent不为0,文件对话框会显示在父widget的中间
3.1.2. Window Titile
窗口标题为第二个参数
3.1.3. 工作目录
“/home/jana”对话框开始展示“/home/jana”的内容
3.1.4. 过滤器
tr(“Image Files (
.png
.jpg *.bmp)”)表示用户可以选择图片,后缀为png,jpg, bmp
3.2. 模式
3.2.1. pattern
"Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"
显示文件的后缀匹配过滤器的文件
可以同时指定多个后缀模式,可以通过XMind右侧的下三角选择
指定多个后缀模式
"Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"
Separate each one with two semicolons
两个分号隔开
3.2.2. FileMode
Constant Value Description
QFileDialog::AnyFile 0 文件名,无论文件存在与否.
QFileDialog::ExistingFile 1 已经存在的文件名.
QFileDialog::Directory 2 目录的名称,文件和目录都被显示.
QFileDialog::ExistingFiles 3 个或多个存在的文件的名称.
FileMode指示在对话框中,用户可以选择什么
如果仅仅允许用户选择某个已经存在的文件,则可以使用ExistingFile
QFileDialog dialog(this)
dialog.setFileMode(QFileDialog::AnyFile)
QStringList fileNames
if (dialog.exec())
fileNames = dialog.selectedFiles()
3.2.3. 视图模式ViewMode
enum ViewMode { Detail, List }
3.2.3.1 列表
3.2.3.2 详细信息
3.2.4. AcceptMode
enum AcceptMode { AcceptOpen, AcceptSave }
Accept模式用来定义对话框是用来打开文件还是用来保存文件
3.2.3.3 保存
3.2.3.4 打开
3.2.5. Option
enum Option { ShowDirsOnly, DontResolveSymlinks, DontConfirmOverwrite, DontUseNativeDialog, ..., DontUseSheet }
该属性影响对话框的界面外观
默认情况下,所有选项都是被禁用
参数应该在显示对话框之前进行设置。当对话框可视的时候设置这些属性不被担保立刻生效。依赖于参数和平台
4. 示例
QString QFileDialog::getOpenFileName(QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0) [static]
QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
"/home",
tr("Images (*.png *.xpm *.jpg)"));
该函数使用给定的parent窗体widget创建了一个模态的文件对话框
如果parent不为0,文件对话框会显示在父widget的中间
QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"), "/home/jana/untitled.png",tr("Images (*.png *.xpm *.jpg)"));
项目工作过程中,在程序执行时,仅仅需要弹出一个对话框,然后获取用户选择的文件,得到文件的路径即可,因此使用了该函数。当用户选中了文件,点击OK之后,对话框销毁,选择的文件路径名会保存在fileName变量中,非常方便。
5. 常用模式
QFileDialog dialog(this)
dialog.setFileMode(QFileDialog::AnyFile)
dialog.setNameFilter(tr("Images (*.png *.xpm *.jpg)"))
dialog.setViewMode(QFileDialog::Detail)
QStringList fileNames
if (dialog.exec())
fileNames = dialog.selectedFiles()
6. 引用
下面第一个引用是自己为QFileDialog类用XMind总结的文档,较为清晰一些,如果习惯使用XMind,可以下载看一下
https://download.csdn.net/download/lk142500/10596068
http://qt.apidoc.info/4.8.5/qfiledialog.html
原文:Q
FIle
Dialog
是用于打开和保存文件的标准对话框。Q
File
Dialog
类继承自Q
Dialog
类Q
File
Dialog
在打开文件时使用可文件过滤器,用于显示指定扩展名的文件,也可以设置使用Q
File
Dialog
打开文件时的起始目录和指定扩展名的文件。
Q
File
Dialog
常用来打开保存文件或打开文件对话框,允许
用户
选择
本地文件或者文件夹
Q
File
Dialog
.get
Open
File
Name() #
获取
一个打开文件的
文件名
Q
File
Dialog
.get
Open
File
Names() #
获取
多个打开文件的
文件名
Q
File
Dialog
.getExistingDirectory() #
获取
打开文件夹的
文件名
Q
File
Dialog
.get
Open
File
Url() #
获取
一个打开文件的统一资源定位符
Q
File
Dialog
.get
Open
File
Urls() #
获取
多个打开文件的统一资源定位符
Q
File
Q
File
Dialog
::get
Open
File
Name 函数含有六个参数
QString Q
File
Dialog
::get
Open
File
Name (
QWidget * parent = 0,
const QString & caption = QString(),
const QString & dir = QString(),
const QString &
Q
File
Dialog
是一个文件对话框,它的作用是生成一个文件对话框,在这个对话框里面,我们可以
选择
自己所需要的目录或者文件。
而其中的get
Open
File
Name文件,这个函数的作用是获得打开文件的
文件名
,将它变成一个字符串,将之输出。
下面,我们来看一下get
Open
File
Name这个函数。
QString Q
File
Dialog
::get
Open
File
Name(QWidget *parent = nullptr, const QString &caption = QString(), c
QString
file
_name = Q
File
Dialog
::get
Open
File
Name(NULL,"标题","./",,"*.xml");
qDebug() <<
file
_name;
./默认打开当前项目所在的目录;最后一个参数有的话,表示筛选打开包含此文件的目录;
多种后缀名的筛选时.
Qt
Widgets.Q
File
Dialog
.get
Open
File
Name是一个使用
Qt
界面库的Python函数,用于打开一个文件对话框,提示
用户
选择
文件并返回所选文件的路径。如果
用户
在文件
选择
对话框中
选择
了"取消"或关闭了对话框,则该函数会返回一个空字符串(“”)构成的元组,即(‘’, ‘’)。可以通过判断函数返回值是否为空元组,来确定
用户
是否
选择
了文件。这是一个使用
Qt
界面库的Python语句,用于
获取
用户
选择
的文件夹路径。Q
File
Dialog
是QWidget的一个方法,
为了说明Q
File
Dialog
::get
Open
File
Name()函数的用法,还是先把函数签名放在这里:
QString Q
File
Dialog
::get
Open
File
Name (
QWidget * parent = 0,
const QString & caption = QString(),
const QString & dir = QString(),
const QString & fil
需要注意的是,在本例中,我们使用了“
file
name, _ = Q
File
Dialog
.get
Open
File
Name”语句来同时
获取
元组中的两个值,并将第二个值(文件类型过滤器)赋值给一个无用的变量“_”,这样就不会出现返回值不是文件路径的情况了。首先要说明的是,Q
File
Dialog
.get
Open
File
Name返回的其实是一个元组,包含了两个值,第一个是所选文件的绝对路径,第二个是所选文件的类型过滤器,因此如果仅仅取第一个元素,就会导致出现返回值不是文件路径的情况。
以下为摘抄内容,版权归原作者,笔者无版权。
Q
File
Dialog
(QWidget *parent= nullptr, const QString &caption= QString(), const QString &directory= QString(), const ...