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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/62124.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【以太网硬件二十】USXGMII是什么?

&#x1f449;个人主页&#xff1a; highman110 &#x1f449;作者简介&#xff1a;一名硬件工程师&#xff0c;持续学习&#xff0c;不断记录&#xff0c;保持思考&#xff0c;输出干货内容 目录 回顾 概览 功能框图描述 XGMII接口和数据包 XGMII接口信号 XGMII数据流 …

pdf怎么转换成word?

随着数字化时代的到来&#xff0c;PDF(Portable Document Format)已成为最受欢迎的文档格式之一&#xff0c;因其在各种设备上的可视性和稳定性而备受推崇。然而在某些情况下&#xff0c;将PDF转换为Word文档可能是必要的&#xff0c;这使得编辑、修改和重新格式化文本变得更加…

龙蜥开发者说 :戮力同心,砥砺前行,为国产操作系统发展出一份力 | 第 23 期

「龙蜥开发者说」第 23 期来了&#xff01;开发者与开源社区相辅相成&#xff0c;相互成就&#xff0c;这些个人在龙蜥社区的使用心得、实践总结和技术成长经历都是宝贵的&#xff0c;我们希望在这里让更多人看见技术的力量。本期故事&#xff0c;我们邀请了龙蜥社区开发者李崇…

【DEVOPS】Jenkins使用问题 - 控制台输出乱码

0. 目录 1. 问题描述2. 解决方案3. 最终效果4. 总结 1. 问题描述 部门内部对于Jenkins的使用采取的是Master Slave Work Node的方式&#xff0c;即作为Master节点的Jenkins只负责任务调度&#xff0c;具体的操作由对应的Slave Work Node去执行。 最近团队成员反馈一个问题&a…

cs231n assignmen3 Extra Credit: Image Captioning with LSTMs

文章目录 嫌墨迹直接看代码Extra Credit: Image Captioning with LSTMslstm_step_forward题面解析代码输出 lstm_step_backward题面解析代码输出 lstm_forward题面解析代码输出 lstm_backward题面解析代码输出 CaptioningRNN.loss解析代码输出 最后输出结语 嫌墨迹直接看代码 …

【Dart】学习使用(二):基本类型

前言 基本类型是语言的基础。 Dart 语言支持以下基础类型&#xff1a;Numbers(int、double)&#xff0c; 整形Strings(String), 字符串Booleans(bool) , 布尔型Records((value1,value2)) 记录Lists(List ) 数组Sets(Set) 集合Maps(Map) 映射Runes(Runes,通常由 characters AP…

【STM32】学习笔记(串口通信)-江科大

串口通信 通信接口硬件电路电平标准USARTUSART框图 通信接口 串口是一种应用十分广泛的通讯接口&#xff0c;串口成本低、容易使用、通信线路简单&#xff0c;可实现两个设备的互相通信 单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信&#…

2023京东酒类市场数据分析(京东数据开放平台)

根据鲸参谋平台的数据统计&#xff0c;今年7月份京东平台酒类环比集体下滑&#xff0c;接下来我们一起来看白酒、啤酒、葡萄酒的详情数据。 首先来看白酒市场。 鲸参谋数据显示&#xff0c;7月份京东平台白酒的销量为210万&#xff0c;环比下滑约49%&#xff1b;销售额将近19…

mfc140u.dll丢失如何修复?解析mfc140u.dll是什么文件跟修复方法分享

大家好&#xff01;今天&#xff0c;我将和大家分享一下关于计算机中mfc140u.dll丢失的6种解决方法。希望我的分享能对大家在计算机使用过程中遇到问题时提供一些帮助。 首先&#xff0c;我想请大家了解一下什么是mfc140u.dll文件。mfc140u.dll是一个动态链接库文件&#xff0…

Unity碰撞检测(3D和2D)

Unity碰撞检测3D和2D 前言准备材料3D2D 代码3D使用OnCollisionEnter()进行碰撞Collider状态代码 使用OnTriggerEnter()进行碰撞Collider状态代码 2D使用OnCollisionEnter2D()进行碰撞Collider2D状态代码 使用OnTriggerEnter2D()进行碰撞Collider2D状态代码 区别3D代码OnCollisi…

对于uts namespace共享的测试

前言 单单以下列命令运行虽然是root&#xff0c;还不行&#xff0c;我们需要加--privileged&#xff0c;不然会报 hostname: you must be root to change the host name docker run -it --utshost ubuntu:latest /bin/bash 如果加上--privileged后 docker run -it --priv…

Watermark 是怎么生成和传递的?

分析&回答 Watermark 介绍 Watermark 本质是时间戳&#xff0c;与业务数据一样无差别地传递下去&#xff0c;目的是衡量事件时间的进度&#xff08;通知 Flink 触发事件时间相关的操作&#xff0c;例如窗口&#xff09;。 Watermark 是一个时间戳, 它表示小于该时间戳的…

nodepad++ 插件的安装

nodepad 插件的安装 一、插件安装二、安装插件&#xff1a;Json Viewer nodepad 有 插件管理功能&#xff0c;其中有格式化json以及可以将json作为树查看的插件&#xff1a; Json Viewer 一、插件安装 1、首先下载最新的notepad 64位【https://notepad-plus.en.softonic.com…

frida动态调试入门01——定位关键代码

说明 frida是一款Python工具可以方便对内存进行hook修改代码逻辑在移动端安全和逆向过程中常用到。 实战 嘟嘟牛登录页面hook 使用到的工具 1&#xff0c;jadx-gui 2&#xff0c;frida 定位关键代码 使用jadx-gui 进行模糊搜索&#xff0c;例如搜索encyrpt之类的加密关键…

语言基础篇1——Python概述,Python是什么?Python能干什么?

概述 简介 Python&#xff0c;计算机高级语言&#xff0c;读作/ˈpaɪθən/&#xff08;英音&#xff09;、/ˈpaɪθɑːn/&#xff08;美音&#xff09;&#xff0c;意为蟒蛇&#xff0c;Python的logo为两条缠绕的蟒蛇 特点 Python以开发效率高而运行效率低著称 应用领域…

CASAIM与北京协和医院达成合作,通过CT重建和3D打印技术为医学实验提供技术辅助和研究样本

近期&#xff0c;CASAIM与北京协和医院达成合作&#xff0c;通过CT重建和3D打印技术为医学实验提供技术辅助和研究样本&#xff0c;在实验样本的一致性和实验研究的严谨性原则下设计方案&#xff0c;推动产学研一体化发展。 北京协和医院是集医疗、教学、科研于一体的现代化综合…

WPF工控机textbox获得焦点自动打开软键盘

1.通过nuget安装 osklib.wpf 2.在textbox getFoucs中敲入如下代码即可实现获得焦点弹出软键盘 private void txtPLC_IP_GotFocus(object sender, RoutedEventArgs e){try{// Osklib.OnScreenKeyboard.Close();Osklib.OnScreenKeyboard.Show();}catch (Exception ex){MessageB…

奥维转债上市价格预测

奥维转债 基本信息 转债名称&#xff1a;奥维转债&#xff0c;评级&#xff1a;AA-&#xff0c;发行规模&#xff1a;11.4亿元。 正股名称&#xff1a;奥特维&#xff0c;今日收盘价&#xff1a;168.31元&#xff0c;转股价格&#xff1a;180.9元。 当前转股价值 转债面值 / 转…

css中文本阴影特效

文字颜色渐变 .text-clip{color:transparent;font-size: 40px;font-weight: bold;background: linear-gradient(45deg, rgba(0,173,181,1) 0%, rgba(0,173,181,.4) 100%);-webkit-background-clip: text; } 文字模糊 .text-blurry{text-align: center;color: transparent;text-…

国产操作系统开放麒麟安装

国产操作系统 开放麒麟 银河麒麟 中科方德 统信UOS 红旗Linux 深度系统 优麒麟系统 开放麒麟操作系统 “开放麒麟1.0”是通过开放操作系统源代码的方式、由众多开发者共同参与研发的国产开源操作系统&#xff0c;系统的发布将有助于推动面向全场景的国产操作系统迭代更新&…