继承 QDialog
目录
1.1.1 获取单个文件 getOpenFileName()
1.1.2 获取多个文件 getOpenFileNames()
1.1.3 获取文件的url getOpenFileUrl()
1.1.4 获取多个文件的url getOpenFileUrls()
1.1.5 获得保存文件路径 getSaveFileUrls()
1.1.6 获取文件保存url getSaveFileUrl()
1.2.1 获取已经存在的文件夹路径 getExistingDirectory()
1.2.2 获取已存在文件夹的url getExistingDirectoryUrl()
2.5.3 QFileDialog.Directory 目录名称
2.5.4 QFileDialog.ExistingFiles 零个或多个现有文件的名称
2.6.1 设置一个名称过滤器 setNameFilter()
2.6.2 设置多个名称过滤器 setNameFilters()
3 设置指定角色的标签名称 setLabelText(QFileDialog.DialogLabel,str)
1 静态方法
1.1 获取文件
1.1.1 获取单个文件 getOpenFileName()
可以直接创建
默认是项目路径
也可以传入参数
- 父控件
- 标题
- 默认路径
- 文件筛选 比如 .py .txt等
- 默认文件筛选 如果不设置默认为第一个
- 选项
会返回一个元组
在QFileDialog中有独有的选项,我们先不在这写,后面会介绍
文件筛选字符串:
- *,* 所有文件
- *.txt 固定尾缀的文件,例为尾缀为txt的文件
- hello.* 固定文件名的文件,例为文件名为hello的文件
文件筛选可以有多个,用两个分号进行分割
- 比如 *.*;;*.txt
前面可以加一个名称
- 比如 All file(*.*);;文本文档(*.txt)
一个括号内,也可以有多种文件
- 比如 All file(*.*);;文本文档(*.txt);;图片(*.jpg *.png)
我们验证一下最复杂的文件筛选字符串 All file(*.*);;文本文档(*.txt);;图片(*.jpg,*.png)
如果选图片的话经测试可以筛选出jpg和png
我们现在回到我们刚刚写的代码
拉到下面可以看到txt的文件
如果点击右上角的叉或者取消
现在我们点击 eula.1028.txt 这个文件,之后点击确定
第一个是选择的文件,第二个是当前选择的过滤器中的内容
1.1.2 获取多个文件 getOpenFileNames()
可以直接创建
默认是项目路径
我们这次点两个文件
之后点击打开
也可以传入参数
- 父控件
- 标题
- 默认路径
- 文件筛选 比如 .py .txt等
- 选项
我们这次选一个文件
之后点击打开
选择一个文件的结果与QFileDialog.getOpenFileName相同
1.1.3 获取文件的url getOpenFileUrl()
可以直接创建
运行后我们选择其中一个文件
点击打开
也可以传入参数
- 父控件
- 标题
- 默认路径
- 文件筛选 比如 .py .txt等
- 选项
选择一个文件点击打开
1.1.4 获取多个文件的url getOpenFileUrls()
可以带参数也可以不带参数,我们直接带参数选两个文件,之后点打开
1.1.5 获得保存文件路径 getSaveFileUrls()
可以带参数也可以不带参数,我们直接带参数选一个文件,然后点击保存
会提示文件已存在,是否替换
点击 是 后
此时对被覆盖的文档没有影响
1.1.6 获取文件保存url getSaveFileUrl()
可以带参数也可以不带参数,我们直接带参数选一个文件,然后点击保存
会提示文件已存在,是否替换
点击 是 后
此时对被覆盖的文档没有影响
当然我们也可以不选文件
进入后,我们进入想保存的目录后,直接输入文件名
之后点击保存
此时指定目录下并没有创建123.txt这个文件
1.2 获取文件夹
1.2.1 获取已经存在的文件夹路径 getExistingDirectory()
可以带参数也可以不带参数,我们直接带参数选一个文件夹,然后点击打开
在这个方法里是没有过滤器这个参数的
运行后,我们选择一个文件夹,然后点击选择文件夹
1.2.2 获取已存在文件夹的url getExistingDirectoryUrl()
可以带参数也可以不带参数,我们直接带参数选一个文件夹,然后点击打开
在这个方法使用了QUrl代替路径
运行后,我们选择一个文件夹,然后点击选择文件夹
2 基本操作
2.1 构造函数
可以带参数也可以不带参数,我们这里直接带参数来搞
2.2 接收模式
下面的代码涉及到一个变量叫QFileDialog.AcceptMode,其中有两个值可选
- 0 - QFileDialog.AcceptOpen 打开
- 1 - QFileDialog.AcceptSave 保存
2.2.1 获取接收模式 acceptMode()
默认情况下是打开模式
2.2.2 设置接收模式 setFileMode()
现在我们给他搞成保存模式
- 注:一定要在open()等弹出方法之前设置
2.3 信号
我们给信号都连接一个槽函数
由于设置了初始值,运行后就激活了三个信号
我们将过滤器改为文本文档
我们现在选中一个文件夹
之后进入这个文件夹
这时我们选中一个文件
之后点击打开
到此我们上面的九个信号都触发了一遍
默认情况下是不能选择多个文件的,我们在下面的设置文件模式中进行介绍
2.4 默认后缀
我们在保存的时候,如果只输入文件名而不输入后缀的话会报错
此时我们设置一个默认的后缀可以解决这个问题
2.4.1 设置 setDefaultSuffix()
此时我们直接输入123,之后点击保存就不会报错了
2.4.2 获取 defaultSuffix()
2.5 设置文件模式
参数为 QFileDialog.FileMode ,可选值如下
- 0 - QFileDialog.AnyFile 任何文件名称
- 1 - QFileDialog.ExistingFile 单个现有文件名称
- 2 - QFileDialog.Directory 目录名称
- 3 - QFileDialog.ExistingFiles 零个或多个现有文件的名称
2.5.1 获取 fileMode()
默认为任何文件名称
在这个框子里,只要输入值,我就能打开
2.5.2 设置 setFileMode()
2.5.2.1 QFileDialog.ExistingFile 单个现有文件名称
我们输入一个1,然后点击打开
会出现一个提示
我们只能选择一个现有的文件,然后点击打开
没有报错
2.5.3 QFileDialog.Directory 目录名称
运行之后是这样的
随便选择一个文件夹,之后选择文件夹,没有报错
- 0 - QFileDialog.AnyFile 任何文件名称
- 1 - QFileDialog.ExistingFile 单个现有文件名称
- 2 - QFileDialog.Directory 目录名称
- 3 - QFileDialog.ExistingFiles 零个或多个现有文件的名称
2.5.4 QFileDialog.ExistingFiles 零个或多个现有文件的名称
运行后我们就可以选择多个文件了
点击打开后,没有提示
2.6 设置名称过滤器
2.6.1 设置一个名称过滤器 setNameFilter()
我们之前创建的
现在我们改成别的
运行之后
2.6.2 设置多个名称过滤器 setNameFilters()
2.7 显示信息的详细程度
参数为 QFileDialog.ViewMode 可选的值为
- 0 - QFileDialog.Detail 显示细节
- 1 - QFileDialog.List 显示列表
2.7.1 获取 viewMode()
默认值为0
2.7.2 设置 setViewMode()
由于默认值为0,我们现在设置为1
在windows下没有变化,不知道在别的系统里有没有变化
3 设置指定角色的标签名称 setLabelText(QFileDialog.DialogLabel,str)
第一个参数为 QFileDialog.DialogLabel,它的值可以为
- QFileDialog.FileName 文件名称标签
- QFileDialog.Accept 接收标签
- QFileDialog.Reject 拒绝标签
- QFileDialog.FileType 文件类型标签
- QFileDialog.LookIn 查找标签
运行之后我只能找到 文件目录,接受和拒绝的位置,另外两个位置找不到