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

这篇具有很好参考价值的文章主要介绍了Qt应用开发(基础篇)——文件选择对话框 QFileDialog。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

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

        对话框窗口 QDialog

Qt应用开发(基础篇)——文件选择对话框 QFileDialog,Qt5从入门到精通-应用开发,qt,PC,c++,上位机

        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()) {
    // ...
}

Qt应用开发(基础篇)——文件选择对话框 QFileDialog,Qt5从入门到精通-应用开发,qt,PC,c++,上位机

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的列表(可能为空)。文章来源地址https://www.toymoban.com/news/detail-700606.html

void urlsSelected(const QList<QUrl> &urls)

到了这里,关于Qt应用开发(基础篇)——文件选择对话框 QFileDialog的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt应用开发(基础篇)——QComboBox

             QComboBox下拉框继承于QWidget,作为Qt Wdiget常用的控件,在实际开发中,经常用来作为某些特定参数属性的选择,比如 语言 、 国家 、 字体 、 主题 、 模式 、 串口号 、 波特率 等选择性已知需要下拉的场景。而QFontComboBox字体下拉框继承于QComboBox,是一个封装专门

    2024年02月15日
    浏览(35)
  • Qt应用开发(基础篇)——进度条 QProgressBar

             QProgressBar 类继承于QWidget,是一个提供了横向或者纵向进度条的小部件。           QProgressBar 进度条一般用来显示用户某操作的进度,比如 烧录、导入、导出、下发、上传、加载 等这些需要耗时和分包的概念,让用户知道程序还在正常的执行中。       

    2024年02月10日
    浏览(29)
  • 【鸿蒙应用ArkTS开发系列】- 选择图片、文件和拍照功能实现

    在使用App的时候,我们经常会在一些社交软件中聊天时发一些图片或者文件之类的多媒体文件,那在鸿蒙原生应用中,我们怎么开发这样的功能呢? 本文会给大家对这个功能点进行讲解,我们采用的是拉起系统组件来进行图片、文件的选择,拉起系统相机进行拍照的这样一种

    2024年02月04日
    浏览(36)
  • Qt应用开发(基础篇)——工具按钮类 QToolButton

            QToolButton 类继承于 QAbstractButton ,该部件为命令或选项提供了一个快速访问按钮,通常用于 QToolBar 中。         按钮基类 QAbstractButton          QToolButton 是一个特殊的按钮,一般显示文本,只显示图标,结合toolBar使用。它提供对特定命令或选项的快速访问,

    2024年02月09日
    浏览(31)
  • Qt应用开发(基础篇)——工具箱 QToolBox

            QToolBox类继承于QFrame,QFrame继承于QWidget,是Qt常用的基础工具部件。         框架类QFrame介绍         QToolBox工具箱类提供了一列选项卡窗口,当前项显示在当前选项卡下面,适用于 分类浏览 、 内容展示 、 操作指引 这一类的使用场景。 1、count        

    2024年02月13日
    浏览(27)
  • Qt应用开发(基础篇)——文本编辑窗口 QTextEdit

             QTextEdit 类继承于QAbstractScrollArea,QAbstractScrollArea继承于QFrame,用来显示富文本和纯文本的窗口部件。 框架类 QFrame https://blog.csdn.net/u014491932/article/details/132188655 滚屏区域基类 QAbstractScrollArea https://blog.csdn.net/u014491932/article/details/132245486          QTextEdit 是一个先

    2024年02月11日
    浏览(26)
  • Qt应用开发(基础篇)——纯文本编辑窗口 QPlainTextEdit

             QPlainTextEdit 类继承于 QAbstractScrollArea , QAbstractScrollArea 继承于 QFrame ,是Qt用来显示和编辑纯文本的窗口。 滚屏区域基类 https://blog.csdn.net/u014491932/article/details/132245486?spm=1001.2014.3001.5501 框架类QFrame https://blog.csdn.net/u014491932/article/details/132188655?spm=1001.2014.3001.5501   

    2024年02月11日
    浏览(31)
  • Qt应用开发(基础篇)——LCD数值类 QLCDNumber

            QLCDNumber类继承于QFrame,QFrame继承于QWidget,是Qt的一个基础小部件。         框架类QFrame介绍         QLCDNumber用来显示一个带有类似lcd数字的数字,适用于 信号灯 、 跑步机 、 体温计 、 时钟 、 电表 、 水表 、 血压计 等仪器类产品的数值显示。      

    2024年02月13日
    浏览(33)
  • Qt应用开发(基础篇)——MDI窗口 QMdiArea QMdiSubWindow

             QMdiArea 类继承于QAbstractScrollArea,QAbstractScrollArea继承于QFrame,是Qt用来显示MDI窗口的部件。        滚屏区域基类 QAbstractScrollArea https://blog.csdn.net/u014491932/article/details/132245486        框架类 QFrame https://blog.csdn.net/u014491932/article/details/132188655           QMdiA

    2024年02月12日
    浏览(34)
  • 12.QT文件对话框 文件的弹窗选择-QFileDialog

    目录 前言: 技能: 内容: 1. 界面 2.信号槽  3.其他函数 参考: 前言: 通过按钮实现文件弹窗选择以及关联的操作 效果图就和平时用电脑弹出的选文件对话框一样 技能:  QString filename = QFileDialog::getOpenFileName(this, \\\"弹窗标题\\\",                                          

    2024年02月20日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包