选择文件夹
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| import QtQuick 2.12 import QtQuick.Controls 2.12 import Qt.labs.platform 1.1
ApplicationWindow { visible: true width: 400 height: 300
Button { text: "选择文件夹" onClicked: folderDialog.open() }
FolderDialog { id: folderDialog title: "请选择一个文件夹" folder: StandardPaths.writableLocation(StandardPaths.DocumentsLocation) onAccepted: { console.log("选择的文件夹: " + folderDialog.folder) } } }
|
默认获取的路径中是以file:///开头的,这里我们要去掉
1 2 3
| var folderPath = folderDialog.folder.toLocaleString() var localPath = folderPath.replace("file:///", "") console.log("选择的文件夹: " + localPath)
|
选择文件
在 QML 中,如果你希望 FileDialog 只允许选择特定格式的文件(例如图片文件),你可以通过设置 nameFilters 属性来实现。
nameFilters 属性允许你指定文件类型过滤器,以便只显示符合特定格式的文件。
如何使用 FileDialog 选择图片文件(例如 .jpg, .png, .gif 等):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| import QtQuick 2.12 import QtQuick.Controls 2.12 import Qt.labs.platform 1.1
ApplicationWindow { visible: true width: 400 height: 300
Button { text: "选择图片文件" onClicked: fileDialog.open() }
FileDialog { id: fileDialog title: "选择图片文件" folder: StandardPaths.writableLocation(StandardPaths.PicturesLocation) nameFilters: [ "图片文件 (*.jpg *.jpeg *.png *.gif *.bmp)", "所有文件 (*)" ] onAccepted: { console.log("选择的图片文件: " + fileDialog.file) } } }
|
说明:
nameFilters 属性:
nameFilters 是一个字符串列表,用于指定文件过滤器。
每个过滤器由两部分组成:描述和文件扩展名。
例如 "图片文件 (*.jpg *.jpeg *.png *.gif *.bmp)" 表示过滤器会显示 .jpg, .jpeg, .png, .gif, .bmp 文件。
你可以添加多个过滤器,例如 "所有文件 (*)" 表示显示所有文件。
folder 属性:
folder 用于指定默认打开的文件夹路径。
StandardPaths.writableLocation(StandardPaths.PicturesLocation) 表示默认打开系统中的图片文件夹。
onAccepted 信号:
- 当用户选择一个文件并点击“确定”时,会触发
onAccepted 信号。
- 你可以通过
fileDialog.file 获取用户选择的文件路径。
支持的图片格式
- 常见的图片格式包括:
.jpg / .jpeg:JPEG 格式。
.png:PNG 格式。
.gif:GIF 格式。
.bmp:BMP 格式。
.tiff:TIFF 格式。
.webp:WebP 格式。
扩展:选择多种格式
如果你希望支持多种文件格式,可以在 nameFilters 中添加多个过滤器,例如:
1 2 3 4 5 6 7 8 9 10 11 12 13
| FileDialog { id: fileDialog title: "选择图片文件" nameFilters: [ "图片文件 (*.jpg *.jpeg *.png *.gif *.bmp)", "PNG 文件 (*.png)", "JPEG 文件 (*.jpg *.jpeg)", "所有文件 (*)" ] onAccepted: { console.log("选择的图片文件: " + fileDialog.file) } }
|