当前位置: 首页 > news >正文

Qt应用开发(基础篇)——文件选择对话框 QFileDialog

一、前言

        QFileDialog类继承于QDialog,提供了一个允许用户选择文件或目录的对话框。

        对话框窗口 QDialog

        QFileDialog文件选择对话框允许用户在当前文件系统中选择一个或者多个文件或者文件路径,使用静态函数创建是很简便的方式,比如:

QString fileName = QFileDialog::getOpenFileName(this,tr("Open Image"), "/home/jana", tr("Image Files (*.png *.jpg *.bmp)"));

        在上面的例子的中,使用静态函数创建文件选择的模式对话框,分别传入标题、文件路径和文件过滤规则,比如你想要多个过滤器,那么用两个分号隔开。返回fileName为选择的文件名,如果没有选择则是空字符串。

"Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"

        当然我们也可以不使用静态函数创建,而是使用API创建,比如:

QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setNameFilter(tr("Image Files (*.png *.jpg *.bmp)"));
dialog.setWindowTitle("Open Image");
dialog.setDirectory("/home/jana");
QStringList fileNames;
if (dialog.exec())fileNames = dialog.selectedFiles();

        在上面的实例中setFileMode()可以指定选择的是文件还是路径或者是全部都可以,使用setNameFilter()过滤文件类型,然后通过selectedFiles()得到选择的文件名称。

二、QFileDialog类

1、acceptMode

        该属性表示对话框的操作策略,定义对话框是用于打开还是保存文件。默认为AcceptOpen,表示打开文件,另一个属性AcceptSave表示保存文件,相当于静态函数getOpen系列和getSave系列。

QFileDialog::AcceptMode acceptMode() const
void setAcceptMode(QFileDialog::AcceptMode mode)

2、defaultSuffix

        该属性表示指定一个字符串,如果文件名没有后缀的话,则添加后文件名的后面。通常后缀是用来表示文件类型,比如txt表示文本,bin表示二进制文件,hex表示十六进制文件,ini表示配置文件等。

QString defaultSuffix() const
void setDefaultSuffix(const QString &suffix)

3、fileMode

        该属性表示选择文件策略,定义了用户希望在对话框中选择的项的数量和类型。默认是AnyFile,该属性会影响文件选择时候的标签。

QFileDialog::FileMode fileMode() const
void setFileMode(QFileDialog::FileMode mode)
QFileDialog::FileMode描述
QFileDialog::AnyFile用户可以选择任何文件,甚至指定一个不存在的文件
QFileDialog::ExistingFile用户只能选择单个存在的文件名称
QFileDialog::Directory用户可以选择一个目录名称
QFileDialog::ExistingFiles用户可以选择一个或者多个存在的文件名称

4、options

        该属性表示影响对话框外观的各种选项,默认是没有的。

QFileDialog::Options options() const
void setOptions(QFileDialog::Options options)
void setOption(QFileDialog::Option option, bool on = true)
QFileDialog::Option描述
ShowDirsOnly文件对话框中只显示目录。默认情况下,同时显示文件和目录。(仅在目录文件模式下有效。)
DontResolveSymlinks不要在文件对话框中解析符号链接。默认情况下,对符号链接进行解析。
DontConfirmOverwrite如果选择了现有文件,请不要要求确认。默认情况下,请求确认。
DontUseNativeDialog不要使用本机文件对话框。默认情况下,将使用本机文件对话框。

5、supportedSchemes

        该属性表示文件对话框应该允许导航到的URL方案,设置此属性允许限制用户能够选择的url类型,设置为空字符串表示没有任何限制。

QStringList supportedSchemes() const
void setSupportedSchemes(const QStringList &schemes)

6、viewMode

        该属性表示文件和目录在对话框中的显示方式,默认下,使用Detail模式显示文件和目录信息,另一个则为List模式仅显示目录中每个项目的图标和名称。

QFileDialog::ViewMode viewMode() const
void setViewMode(QFileDialog::ViewMode mode)

7、公共函数

1)directory

        返回当前显示在对话框中的目录。

QDir directory() const

2)setDirectory

        设置当前显示在对话框中的目录。

void setDirectory(const QString &directory)
void setDirectory(const QDir &directory)

3)directoryUrl

        返回当前显示在对话框中的目录的url。

QUrl directoryUrl() const

4)setDirectoryUrl

        设置当前显示在对话框中的目录的url。

void setDirectoryUrl(const QUrl &directory)

5)history

        将文件对话框的浏览历史记录作为路径列表返回。

QStringList history() const

6)history

        设置文件对话框的浏览历史记录以包含给定的路径。

void setHistory(const QStringList &paths)

7)iconProvider

        返回文件对话框使用的图标,使用QFileIconProvider封装。

QFileIconProvider *iconProvider() const

8)setIconProvider

        返回文件对话框使用的图标,使用QFileIconProvider封装。

void setIconProvider(QFileIconProvider *provider)

9)nameFilters

        返回在此文件对话框上运行过滤器。

QStringList nameFilters() const

10)setNameFilters

        设置在此文件对话框上运行过滤器。

void setNameFilters(const QStringList &filters)
 const QStringList filters({"Image files (*.png *.xpm *.jpg)","Text files (*.txt)","Any files (*)"});QFileDialog dialog(this);dialog.setNameFilters(filters);dialog.exec();

11)mimeTypeFilters

        返回在此文件对话框上运行的MIME类型过滤器。

QStringList mimeTypeFilters() const

12)setMimeTypeFilters

        设置在此文件对话框上运行的MIME类型过滤器。这是比setNameFilters更方便的方法,使用QMimeType从每个MIME类型中定义的全局模式和描述创建名称过滤器。

void setMimeTypeFilters(const QStringList &filters)
 QStringList mimeTypeFilters({"image/jpeg", // will show "JPEG image (*.jpeg *.jpg *.jpe)"image/png",  // will show "PNG image (*.png)""application/octet-stream" // will show "All files (*)"});QFileDialog dialog(this);dialog.setMimeTypeFilters(mimeTypeFilters);dialog.exec();

13)labelText

        返回指定标签中文件对话框中显示的文本。

QString labelText(QFileDialog::DialogLabel label) const

14)labelText

        设置指定标签中文件对话框中显示的文本。

void setLabelText(QFileDialog::DialogLabel label, const QString &text)

15)open

        将它的一个信号连接到由接收器和成员指定的插槽。如果fileMode是ExistingFiles,则绑定filesSelected()信号,如果fileMode是其他任何东西,则绑定fileSelected()信号。当对话框关闭时,信号槽断开。

void open(QObject *receiver, const char *member)

16)proxyModel

        返回文件对话框使用的QAbstractProxyModel代理模型。默认情况下,没有设置代理。

QAbstractProxyModel *proxyModel() const

17)setProxyModel

        将视图的模型设置为给定的QAbstractProxyModel代理模型。用于修改底层模型,例如,添加列、筛选数据或添加驱动器。

void setProxyModel(QAbstractProxyModel *proxyModel)

18)itemDelegate

        返回用于呈现文件对话框中视图中的项的项QAbstractItemDelegate委托。

QAbstractItemDelegate *itemDelegate() const

19)setItemDelegate

        设置用于呈现文件对话框中视图中的项的项QAbstractItemDelegate委托。

void setItemDelegate(QAbstractItemDelegate *delegate)

20)restoreState

        将对话框的布局、历史记录和当前目录恢复到指定的状态。

bool restoreState(const QByteArray &state)

21)saveState

       保存对话框的布局、历史和当前目录的状态。一般返回QByteArray保存在外部文件或者缓存中,可以使用ini文件保存某一时刻的状态,然后必要的时候使用restoreState恢复到目标状态。

QByteArray saveState() const

22)selectedFiles

        返回包含对话框中所选文件的绝对路径的字符串列表。如果没有选择文件,或者模式不是ExistingFiles或ExistingFile,则selectedFiles()包含视口中的当前路径。

QStringList selectedFiles() const

23)selectedFile

        返回在文件对话框中选择给定的文件名。

void selectFile(const QString &filename)

24)selectedUrls

        返回包含对话框中选定文件的url列表。如果没有选择文件,或者模式不是ExistingFiles或ExistingFile,则selectedUrls()包含视口中的当前路径。

QList<QUrl> selectedUrls() const

 25)selectedNameFilter

        返回用户在文件对话框中选择的过滤器。

QString selectedNameFilter() const

 26)selectedMimeTypeFilter

        返回用户在文件对话框中选择的文件的mime类型。

QString selectedMimeTypeFilter() const

27)sidebarUrls

        返回位于侧边栏中的url。

QList<QUrl> sidebarUrls() const

 28)setSidebarUrls

        设置位于侧边栏中的url。

void setSidebarUrls(const QList<QUrl> &urls)
QList<QUrl> urls;
urls << QUrl::fromLocalFile("/Users/foo/Code/qt5")<< QUrl::fromLocalFile(QStandardPaths::standardLocations(QStandardPaths::MusicLocation).first());QFileDialog dialog;
dialog.setSidebarUrls(urls);
dialog.setFileMode(QFileDialog::AnyFile);
if(dialog.exec()) {// ...
}

8、静态函数

1)模式对话框

        QFileDialog使用静态函数创建模式对话框,传入父窗口指针、标题、路径、窗口样式、过滤器,在父窗口居中显示,以下这些用法都大同小异,参考开头示例。

QString getExistingDirectory(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), QFileDialog::Options options = ShowDirsOnly)
QUrl getExistingDirectoryUrl(QWidget *parent = nullptr, const QString &caption = QString(), const QUrl &dir = QUrl(), QFileDialog::Options options = ShowDirsOnly, const QStringList &supportedSchemes = QStringList())
void getOpenFileContent(const QString &nameFilter, const std::function<void (const QString &, const QByteArray &)> &fileOpenCompleted)
QString getOpenFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options())
QStringList getOpenFileNames(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options())
QUrl getOpenFileUrl(QWidget *parent = nullptr, const QString &caption = QString(), const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options(), const QStringList &supportedSchemes = QStringList())
QList<QUrl> getOpenFileUrls(QWidget *parent = nullptr, const QString &caption = QString(), const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options(), const QStringList &supportedSchemes = QStringList())
QString getSaveFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options())
QUrl getSaveFileUrl(QWidget *parent = nullptr, const QString &caption = QString(), const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options(), const QStringList &supportedSchemes = QStringList())

2)saveFileContent

         让用户选择的文件名和位置将fileContent保存到文件中,提供fileNameHint来向用户建议文件名。

void saveFileContent(const QByteArray &fileContent, const QString &fileNameHint = QString())

9、信号

1)currentChanged

        当当前文件因本地操作而更改时,将发出此信号,并将新文件名作为路径参数。

void currentChanged(const QString &path)

2)currentUrlChanged

        当当前文件发生变化时,该信号将以新文件URL作为URL参数发出。

void currentUrlChanged(const QUrl &url)

3)directoryEntered 

        当用户进入目录时,为本地操作发出此信号。

void directoryEntered(const QString &directory)

4)directoryUrlEntered 

        当用户进入目录时发出此信号。

void directoryUrlEntered(const QUrl &directory)

5)fileSelected 

        当本地操作的选择发生变化并且对话框被接受时,该信号将与所选文件(可能为空)一起发出。

void fileSelected(const QString &file)

6)filesSelected 

        当本地操作的选择发生变化并且接受对话框时,该信号将与所选文件的(可能为空的)列表一起发出。

 void filesSelected(const QStringList &selected)

7)filterSelected 

        当用户选择过滤器时,会发出此信号。

void filterSelected(const QString &filter)

8)urlSelected 

        当选择更改并且接受对话框时,该信号将与所选url(可能为空)一起发出。

void urlSelected(const QUrl &url)

9)urlsSelected 

        当选择更改并且接受对话框时,将发出此信号,其中包含所选url的列表(可能为空)。

void urlsSelected(const QList<QUrl> &urls)

相关文章:

Qt应用开发(基础篇)——文件选择对话框 QFileDialog

一、前言 QFileDialog类继承于QDialog&#xff0c;提供了一个允许用户选择文件或目录的对话框。 对话框窗口 QDialog QFileDialog文件选择对话框允许用户在当前文件系统中选择一个或者多个文件或者文件路径&#xff0c;使用静态函数创建是很简便的方式&#xff0c;比如&#xf…...

图像OCR转文字,验证码识别技术太疯狂-UI软件自动化

现在用PYTHON识别图片文字&#xff0c;PaddleOCR&#xff0c;Tesseract,Opencv等很多开源技术。知识大爆炸年代&#xff0c;几年不学习就跟不上时代了。 以前早的时候一个验证码图片上有4个不同颜色字符&#xff0c;带一些杂点&#xff0c;我写点代码按颜色最多的进行提取&…...

Docker:自定义镜像

&#xff08;总结自b站黑马程序员课程&#xff09; 环环相扣&#xff0c;跳过部分章节和知识点是不可取的。 一、镜像结构 镜像是分层结构&#xff0c;每一层称为一个Layer。 ①BaseImage层&#xff1a;包含基本的系统函数库、环境变量、文件系统。 ②Entrypoint&#xff1…...

【Nginx22】Nginx学习:FastCGI模块(四)错误处理及其它

Nginx学习&#xff1a;FastCGI模块&#xff08;四&#xff09;错误处理及其它 FastCGI 最后一篇&#xff0c;我们将学习完剩下的所有配置指令。在这里&#xff0c;错误处理还是单独拿出来成为一个小节了&#xff0c;而剩下的内容都放到其它中进行学习。不要感觉是其它的就没用了…...

轮毂电机单位换算-米每秒/转每分

先前写了一篇度/S和RPM的关系 这次补全一点 假设轮毂电机直径20CM 0.2M 周长为0.628M 0.2*3.14 轮子转一圈走0.628M 1RPM的单位是转/分 换成转/S 就除以60 也就是轮子转一圈的速度0.628/60 m/S 0.010467m/S 所以换算如下: 1RPM0.010467 m/S 那么1m/S1/(0.010467) RPM95.5RPM 如…...

博流RISC-V芯片BL616开发环境搭建

文章目录 1、工具安装2、代码下载3、环境变量配置4、下载交叉编译器5、编译与下载运行6、使用ninja编译 本文分别介绍博流RISC-V芯片 BL616 在 Windows和Linux 下开发环境搭建&#xff0c;本文同时适用BL618&#xff0c;BL602&#xff0c;BL702&#xff0c;BL808系列芯片。 1、…...

Weblogic漏洞(三)之 Weblogic 弱口令、任意文件读取漏洞

Weblogic 弱口令、任意文件读取漏洞 环境安装 此次我们实验的靶场&#xff0c;是vnlhub中的Weblogic漏洞中的weak_password靶场&#xff0c;我们 cd 到weak_password&#xff0c;然后输入以下命令启动靶场环境&#xff1a; docker-compose up -d输入以下的命令可以查看当前启…...

15 mysql tiny/meidum/long blob/text 的数据存储

前言 这里主要是 由于之前的一个 datetime 存储的时间 导致的问题的衍生出来的探究 探究的主要内容为 int 类类型的存储, 浮点类类型的存储, char 类类型的存储, blob 类类型的存储, enum/json/set/bit 类类型的存储 本文主要 的相关内容是 tiny/medium/long blob/text 类…...

【方案】基于视频与AI智能分析技术的城市轨道交通视频监控建设方案

一、背景分析 地铁作为重要的公共场所交通枢纽&#xff0c;流动性非常高、人员大量聚集&#xff0c;轨道交通需要利用视频监控系统来实现全程、全方位的安全防范&#xff0c;这也是保证地铁行车组织和安全的重要手段。调度员和车站值班员通过系统监管列车运行、客流情况、变电…...

mysql8 修改数据存储位置

1、停止MySQL服务 systemctl stop mysqld2、复制现有的数据库目录到新的位置 默认情况下&#xff0c;MySQL的数据库目录位于/var/lib/mysql。假设您想将数据库目录更改为/home/mysql&#xff0c;您可以使用以下命令来复制数据库目录 cp -R /var/lib/mysql /home/mysql3、修改…...

Qt QSlider样式

滑块控件QSlider&#xff0c;如果设置的垂直样式&#xff0c;其进度颜色和剩余颜色&#xff0c;刚好和横向样式的颜色相反的&#xff0c;不确定这个是否是Qt的BUG&#xff0c;Qt456都是这个现象 QSlider::groove:horizontal{ height:8px; background:#FF0000; }QSlider::add-p…...

Redis五大数据类型

Redis五大数据类型 Redis-Key 官网&#xff1a;https://www.redis.net.cn/order/ 序号命令语法描述1DEL key该命令用于在 key 存在时删除 key2DUMP key序列化给定 key &#xff0c;并返回被序列化的值3EXISTS key检查给定 key 是否存在&#xff0c;存在返回1&#xff0c;否则返…...

chatGPT训练过程

强化学习基础 强化学习是指智能体在不确定环境中最大化其获得的奖励从而达到自主决策的目的。其执行过程为&#xff1a;智能体依据策略决策从而执行动作&#xff0c;然后感知环境获取环境的状态&#xff0c;进而得到奖励(以便下次再到相同状态时能采取更优的动作)&#xff0c;…...

原神角色数据分析项目说明文档

---项目涉及--- 前端html语言&#xff0c;flask框架&#xff0c;excel&#xff0c;MySQL&#xff0c;DataFrame数组&#xff0c;numpy&#xff0c;pyecharts ---实现方式--- 将所有角色数据存储在excel表格中&#xff0c;在需要时读取&#xff0c;当用户想要查看某一项时&…...

【Qt】QML-04:自定义变量(属性)property

1、property 1.1 介绍 property用来自定义属性。 什么是属性&#xff1f;面向对象中&#xff0c;类由方法和属性构成。对于从C语言的过来人&#xff0c;更喜欢称之为变量。 之所以说“自定义”&#xff0c;是因为QML语言本身已有默认定义好的属性&#xff0c;这些属性不可以…...

基于Cadence Allegro无盘设计操作流程

无盘设计 1.因为过孔具有电容效应&#xff0c;无盘设计能最大限度保证阻抗连续性&#xff0c;从而减小反射与插损&#xff1b; 2.减缓走线压力&#xff0c;降低产品成本与风险&#xff1b; SetupConstraintsModelSpacing Models勾选Hole to line SetupUnused Pads Su…...

微信小程序 - 2023年最新版手机号快捷登录详细教程

前言 最近开发公司手机快捷登录的功能&#xff0c;花费了不少时间&#xff0c;这里附上详细教程。 这里以海底捞小程序的图片为例&#xff0c;如有侵权请联系小编删除。 代码如下 <button open-type"getPhoneNumber" getphonenumber"getPhoneNumber"…...

Spring_Bean的自动装配

目录 三种配置机制 测试搭建 byName byType 使用注解 Autowire Qualifer Resource Autowire和Resource的不同 自动装配是使用spring满足bean依赖的一种条件 三种配置机制 在xml中显式配置&#xff1b;在java中显式配置&#xff1b;隐式的bean发现机制和自动装配。 …...

使用boost::geometry::union_ 合并边界(内、外)- 方案一

使用boost::geometry::union_ 合并边界&#xff08;内、外&#xff09;&#xff1a;方案一 结合 boost::geometry::read_wkt() 函数 #include <iostream> #include <vector>#include <boost/geometry.hpp> #include <boost/geometry/geometries/point_x…...

面向高速公路车辆切入场景的自动驾驶测试用例生成方法

1 前言 自动驾驶汽车为解决“交通事故、交通拥堵、环境污染、能源短缺”等问题提供了新的途径[1]。科学完善的测试验证评价体系对提高自动驾驶汽车的研发效率、健全相关法律法规、推进智能交通发展至关重要[2]。自2009年起&#xff0c;谷歌自动驾驶汽车已经进行了超过560万km公…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...