1. 说明

在QT开发当中,关于文件的读写操作一般使用C++端进行实现,比较方便。如果只想获取文件夹或者文件的保存路径,使用QML中提供的控件时比较方便的,主要涉及到三个控件,分别是FolderDialog、FileDialog、FolderListModel,本篇文章对三者的简单使用做简要介绍。

2. FoliderDialog – 获取文件夹地址

主要属性:
folder:最终选择的文件夹目录地址,只有在最终选择好之后,点击了确定之后才会赋予这个值当前文件夹的路径
currentFolder:目前文件夹目录地址,这个属性会在鼠标点选时随时动态更新
信号:
onAccepted():确定文件夹目录地址后,可通过上面两个属性获取,并在这个信号中进行处理
示例代码:

FolderDialog{id:folderDialogonAccepted: {console.log(currentFolder)console.log(folder)}
}
Button{anchors.centerIn: parenttext: "打开文件夹"onClicked: {folderDialog.open()}
}

3. FileDialog – 获取文件地址

主要属性:
folder:指定文件夹打开的跟地址
currentFile:目前文件夹目录地址,这个属性会在鼠标点选时随时动态更新
file:最终选择文件的目录地址
currentFiles:目前文件夹目录地址列表,这个属性会在鼠标点选时随时动态更新
files:最终选择文件的目录地址列表
fileMode:
FileDialog.OpenFile:打开单个文件,和currentFile和File对应
FileDialog.OpenFiles:可打开多个文件,和currentFiles和Files对应
FileDialog.SaveFile:打开文件夹,保存一个文件
nameFilters:文件格式过滤
信号:
onAccepted():确定文件目录地址后,可通过上面的属性获取,并在这个信号中进行处理
示例代码:

FileDialog{id:fileDialogfileMode: FileDialog.SaveFileFile/*Dialog.OpenFiles*//*FileDialog.SaveFile*/onAccepted: {console.log(currentFile)console.log(currentFiles)console.log(file)}
}
Button{text: "打开文件"onClicked: {fileDialog.open()}
}

3. FolderListModel – 获取文件列表信息数据

此类主要用来获取指定文件夹下的所有文件,包括文件夹,会将获取到的数据存储为Model类型,可以将其结果赋值给一个view,当数据使用。
主要属性:
folder:指定文件夹打开的跟地址
showDirs:是否显示文件夹
showDotAndDotDot:是否显示 . 和 … 文件夹
showFiles:是否显示文件
nameFilters:文件格式过滤
主要方法:
get(index,property):获取指定索引数据的指定属性值
isFolder(index):判断指定索引的数据是否时文件夹类型
有一些属性是存储在每一项的model数据中的,可以直接在delegate中直接使用的,如下:
fileName:
filePath:
fileURL:
fileBaseName:
fileSuffix:
fileSize:
fileModified:
fileAccessed:
fileIsDir:
示例代码:

import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Controls 2.1
import QtQuick.Layouts 1.15
import Qt.labs.platform 1.1
import Qt.labs.folderlistmodel 2.1Window {id:rootobjectName: "mainWindow"width: 640height: 480visible: truetitle: qsTr("Hello Signal")FolderListModel{id:folderListModelfolder:"./"showDirs: trueshowDotAndDotDot: trueshowFiles: true}Component{id:delegateComRectangle{anchors.horizontalCenter: parent.horizontalCenterwidth: parent.width - 10height:30color:"#DEDBDB"border.color:"lightgray"border.width:1radius:5Text {anchors.verticalCenter: parent.verticalCentertext: index + "/" + folderListModel.count + "|名称: " + fileName + "|格式: " + fileSuffix + "|大小: " + fileSize //count 过滤后的文件个数color: folderListModel.isFolder(index)? "red" : "blue" //判断是否文件夹font.pixelSize: 15}}}Rectangle{anchors.centerIn: parentwidth: 400height: 400color:"gray"ListView{anchors.fill: parentspacing: 10clip:truemodel:folderListModeldelegate: delegateCom}}
}

效果展示:

FolderListModel简单使用

持续更新中,请大家多多关注…

12. FolderDialog、FileDialog、FolderListModel的简单使用相关推荐

  1. 【编译原理笔记12】中间代码生成:简单赋值语句的翻译,数组引用的翻译

    本次笔记内容: 6-3 简单赋值语句的翻译 6-4 数组引用的翻译 本节课幻灯片,见于我的 GitHub 仓库:第12讲 中间代码生成_2.pdf 文章目录 简单赋值语句的翻译 赋值语句翻译的任务 赋 ...

  2. 【C# 教程系列第 12 篇】抽象类的简单实现

    这是[C# 教程系列第 12 篇],如果觉得有用的话,欢迎关注专栏. 上一篇博客讲到了 C# 中的抽象类与抽象方法,对这两个概念不清楚的可以 点击此处 通过上篇博客我们会发现,使用 abstract ...

  3. java游戏2333整合包,[1.12.2][CatServer]基础插件简单MOD冰与火传说整合服务端

    包含内容: 插件列表: 彩色标语-MOTDColor1.7.X 传送君TPAPro v1.2 登陆AuthMe-5.6.0-SNAPSHOT 服务器优化LaggRemover-2.0.5 更多声音pl ...

  4. 4米乘以12米CAD图_简单四步,教你如何绘制好施工现场总平面布置图

    原标题:简单四步,教你如何绘制好施工现场总平面布置图 施工总平面布置图是拟建项目施工场地的总布置图.它按照施工方案和施工进度的要求,对施工现场的道路交通.材料仓库.加工场地.主要机械设备.临时房屋.临 ...

  5. 《Python编程:从入门到实战》学习笔记(第2版) 第1-2章 起步变量和简单数据类型

    [写在前面]为进一步提高自己的python代码能力,打算把几本经典书籍重新过一遍,形成系统的知识体系,同时适当记录一些学习笔记,我尽量及时更新!先从经典的<Python编程:从入门到实战> ...

  6. c语言12之编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:操作数1 运算符op 操作数2 计算表达式的值,指定的运算符为加减乘除。

    题目: 设计一个简单的计算器程序,要求根据用户从键盘输入的表达式: 操作数1 运算符op 操作数2 计算表达式的值,指定的运算符为加减乘除. 源代码: #include<stdio.h> ...

  7. 2013.12.27 泡面吧--简单的斐波那契数列

    斐波那契数列是一种非常有意思的数列,由 0 和 1 开始,之后的斐波那契系数就由之前的两数相加.用数学公式定义斐波那契数列则可以看成如下形式: F0=0 F1=1 Fn=Fn-1+Fn-2 我们约定F ...

  8. 【tkinter】的使用详解,做一个简单实用的万能可视化界面!

    文章目录 一.tkinter类介绍 二.在例子中学会用法! 1.一个简单的开始 2.学会使用button 3.Entry窗口部件 1.简单使用 2.动态改变entry内部的值 4.Text窗口部件 ( ...

  9. h5自定义相机界面_MIUI 12全新相机发布,多款相机图标进行重绘,可升级机型一览...

    在此之前,小米也是在万众期待之下发布了最新的MIUI 12系统IO,而其中此次的MIUI 12重点进行升级更新的就要数相机部分了. 全新的MIUI 12相机将会重回简单UI,在整个相机拍照界面进行极简 ...

最新文章

  1. matlab命名文件保存在哪里,用Matlab给整个文件夹下的文件分别重命名
  2. Python程序开发——第五章 函数
  3. Linux内核配置系统浅析
  4. 施密特正交化的几何解释
  5. 万圣趴的神秘南瓜仙人,送你3本惊喜Python好书
  6. SpringBoot-技术专区-详细打印启动时异常堆栈信息
  7. Servlet(2)
  8. Asp.net Mvc 获取json数据 简单案例
  9. kodi android 目录,Kodi使用豆瓣刮削器建立媒体库,以及把资料库导出到片源目录...
  10. http禁用缓存、文件下载
  11. matlab 代码 经典例题,MATLAB程序设计及经典例题解析3
  12. 存储器基本概念及分类介绍
  13. 目标跟踪常用算法——EKF篇
  14. 三循环流水灯电路的原理
  15. Outlook登录163邮箱,qq邮箱以及企业邮箱等邮箱
  16. T007V-采购订单税码对应的税率所在后台表
  17. 单片机万年历c语言程序设计,基于AT89C51单片机的多功能
  18. 名帖296 傅山 行书《行书帖选》
  19. excel如何获取括号内字符以及excel如何根据第一列是否相等判断是否累加第二列
  20. 弹弹堂服务器找不到,4399弹弹堂 合服常见问题及解答

热门文章

  1. selenium破解滑块验证码自动查询+获取后续表单数据
  2. ins的更新带来的一系列问题
  3. DDD不够好用,你需要学习如何进行弹性软件系统设计
  4. 车牌识别EasyPR(3)——SVM模型判断车牌
  5. AspectJ的Execution表达式
  6. Interval数据类型
  7. 机器学习数据集(持续更新)
  8. Shiro(三) Shiro核心原理分析
  9. Blender:Lowpoly手部建模流程(附blender源文件下载)
  10. 在Python中,可以使用try-except语句来处理异常。