版权声明:本文为博主原创文章,未经博主允许不得转载。
- 1
- 2
- 1
- 2
使用QFileDialog有两种方法,一种是比较简单的使用“静态函数法”,另一种是可以自定义各个细节的“构造函数法”。
第一种:静态函数法
根据官方的说明文档,总共有8个静态函数可以使用,我们可以举个例子,如getOpenFileName这个静态函数:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
这里需要注意下,最上头的是QApplication,不是QCoreApplication。运行结果如下:
这样就可以获得所需文件的绝对路径,就可以配合QFile来操作文件了。
下面来看下这8个静态函数可以干什么用?
- getExistingDirectory 只获取文件夹
- 1
- 2
- 1
- 2
-
getExistingDirectoryUrl
和getExistingDirectory类似,功能也是获取文件夹路径,最大的区别在于参数里的路径是QUrl类型,这为用户提供了选择远程目录的能力。 -
getOpenFileName 获取本地文件
该静态函数已经在上面的例子中示范过使用方法,这里不再赘述。 -
getOpenFileUrl 获取远程文件
为用户提供了获取远程文件路径的能力 -
getOpenFileUrls 获取多个远程文件
可以得到多个远程文件路径 -
getOpenFileNames 获取多个本地文件
- 1
- 2
- 3
- 1
- 2
- 3
-
getSaveFileName 保存本地文件对话框
-
getSaveFileUrl 保存远程文件对话框
第二种:构造函数法-自定义细节
先构造一个QFileDialog对象:
- 1
- 1
- 设置是打开还是保存文件对话框 AcceptMode(2个枚举)
- 1
- 2
- 1
- 2
- 设置对话框显示信息的详细程度(2个枚举)
- 1
- 2
- 1
- 2
- 设置点击OK后,对话框返回什么(4个枚举)
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
- 设置标题
- 1
- 1
- 设置默认后缀
- 1
- 1
上面除了还有个Option没写以外,其他都是Properties,下面开始讲公共函数。
- 获取对话框中的目录地址
- 1
- 2
- 3
- 1
- 2
- 3
- 设置QDir::filter过滤器
- 1
- 2
- 1
- 2
这里的QDir::filter过滤器和对话框右下角(*.txt)过滤器不一样,QDir::filter过滤器有16个枚举,如下:
Constant | Value | Description |
---|---|---|
QDir::Dirs | 0x001 | 列出匹配filters的目录 |
QDir::AllDirs | 0x400 | 列出所有目录 |
QDir::Files | 0x002 | 列出所有文件 |
QDir::Drives | 0x004 | 列出磁盘驱动器(Unix系统忽略) |
QDir::NoSymLinks | 0x008 | 不列出符号连接 |
QDir::NoDotAndDotDot | NoDot or NoDotDot | 不列出特殊条目,如“.”或者“..” |
QDir::NoDot | 0x2000 | 不列出“.” |
QDir::NoDotDot | 0x4000 | 不列出“..” |
QDir::AllEntries | Dirs\Files\Drives | 列出目录、驱动盘、符号连接 |
QDir::Readable | 0x010 | 列出程序有读权限的文件。可读值需配合Dirs和Files |
QDir::Writable | 0x020 | 列出程序有写权限的文件。可读值需配合Dirs和Files |
QDir::Executable | 0x040 | 列出程序有运行权限的文件。可读值需配合Dirs和Files |
QDir::Modified | 0x080 | 只列出已修改的文件(Unix系统忽略) |
QDir::Hidden | 0x100 | 列出隐藏文件(Unix系统以“.”开头) |
QDir::System | 0x200 | 列出系统文件 |
QDir::CaseSensitive | 0x800 | 过滤器应区分大小写 |
如果不设置QDir::filter,默认的选择是这样的:
- 设置历史目录setHistory
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
-
返回文件图标提供者
QFileIconProvider * QFileDialog::iconProvider() const
这个就是关于文件等图标的函数,用这个函数可以获得是谁提供了这些图标的。当然系统图标也可以自己设置。 -
返回委托
QAbstractItemDelegate * QFileDialog::itemDelegate() const
返回列表项目的delegate(委托),这些委托用来提供对话框视图中的项目。 -
设置对话框中的文字标签
在对话框中可以设置的文字标签共有5处,如下图:
这里就是举个例子,其他的内容为啥显示不出来我也不知道。。。。不过我试过把LoonIn这一项不手工设置,输出系统默认时发现,在我这个windows10机子上返回的结果是”“空……….
-
返回MIME类型的文件过滤器
QStringList QFileDialog::mimeTypeFilters() const -
设置多个对话框右下角的文件过滤器
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
信号
在文件对话框中的操作会触发相应的信号
以后在更新~~