QFileDialog 对话框类

2023-11-09

QFileDialog 对话框类

QFileDialog 对话框类是 QDialog 类的子类, 通过这个类可以选择要打开/保存的文件或者目录。关于这个类我们只需要掌握一些静态方法的使用就可以了。

/*
通用参数:
  - parent: 当前对话框窗口的父对象也就是父窗口
  - caption: 当前对话框窗口的标题
  - dir: 当前对话框窗口打开的默认目录
  - options: 当前对话框窗口的一些可选项,枚举类型, 一般不需要进行设置, 使用默认值即可
  - filter: 过滤器, 在对话框中只显示满足条件的文件, 可以指定多个过滤器, 使用 ;; 分隔
    - 样式举例: 
	- Images (*.png *.jpg)
	- Images (*.png *.jpg);;Text files (*.txt)
  - selectedFilter: 如果指定了多个过滤器, 通过该参数指定默认使用哪一个, 不指定默认使用第一个过滤器
*/
// 打开一个目录, 得到这个目录的绝对路径
[static] QString QFileDialog::getExistingDirectory(
                  QWidget *parent = nullptr, 
                  const QString &caption = QString(), 
                  const QString &dir = QString(), 
                  QFileDialog::Options options = ShowDirsOnly);

// 打开一个文件, 得到这个文件的绝对路径
[static] QString QFileDialog::getOpenFileName(
    	          QWidget *parent = nullptr, 
    		  const QString &caption = QString(), 
                  const QString &dir = QString(), 
                  const QString &filter = QString(), 
                  QString *selectedFilter = nullptr, 
                  QFileDialog::Options options = Options());

// 打开多个文件, 得到这多个文件的绝对路径
[static] QStringList QFileDialog::getOpenFileNames(
    	          QWidget *parent = nullptr, 
                  const QString &caption = QString(), 
                  const QString &dir = QString(), 
                  const QString &filter = QString(), 
                  QString *selectedFilter = nullptr, 
                  QFileDialog::Options options = Options());

// 打开一个目录, 使用这个目录来保存指定的文件
[static] QString QFileDialog::getSaveFileName(
    		  QWidget *parent = nullptr, 
                  const QString &caption = QString(), 
                  const QString &dir = QString(), 
                  const QString &filter = QString(), 
                  QString *selectedFilter = nullptr, 
                  QFileDialog::Options options = Options());

例子:

  1. 打开本地目录
void MainWindow::on_filedlg_clicked()
{
    QString dirName = QFileDialog::getExistingDirectory(
                      this,
                      "打开文件",
                      "E://BaiduNetdiskDownload");
    QMessageBox::information(this, "打开目录", "您选择的目录是: " + dirName);
}

在这里插入图片描述
在这里插入图片描述
运行效果:
在这里插入图片描述

在这里插入图片描述

  1. 打开一个本地文件

selectedFilter: 如果指定了多个过滤器, 通过该参数指定默认使用哪一个, 不指定默认使用第一个过滤器

void MainWindow::on_filedlg_2_clicked()
{
    QString arg("Text files (*.txt)");
    QString fileName = QFileDialog::getOpenFileName(
              this, "Open File", "E://BaiduNetdiskDownload",
              "Images (*.png *.jpg);;Text files (*.txt)");
    QMessageBox::information(this, "打开文件", "您选择的文件是: " + fileName);
}

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

void MainWindow::on_filedlg_2_clicked()
{
    QString arg("Text files (*.txt)");
    QString fileName = QFileDialog::getOpenFileName(
              this, "Open File", "E://BaiduNetdiskDownload",
              "Images (*.png *.jpg);;Text files (*.txt)", &arg);
    QMessageBox::information(this, "打开文件", "您选择的文件是: " + fileName);
}

在这里插入图片描述

void MainWindow::on_filedlg_2_clicked()
{
    QString arg("Text files (*.txt *.doc)");
    QString fileName = QFileDialog::getOpenFileName(
              this, "Open File", "E://BaiduNetdiskDownload",
              "Images (*.png *.jpg);;Text files (*.txt *.doc)", &arg);
    QMessageBox::information(this, "打开文件", "您选择的文件是: " + fileName);
}

在这里插入图片描述

最终打开为:
在这里插入图片描述

  1. 打开多个本地文件

就是使用了字符串拼接

void MainWindow::on_filedlg_3_clicked()
{
    QStringList fileNames = QFileDialog::getOpenFileNames(
              this, "Open File", "e:\\temp",
              "Images (*.png *.jpg);;Text files (*.txt)");
    QString names;
    for(int i=0; i<fileNames.size(); ++i)
    {
        names += fileNames.at(i) + " ";
    }
    QMessageBox::information(this, "打开文件(s)", "您选择的文件是: " + names);
}

在这里插入图片描述
在这里插入图片描述

  1. 打开保存文件对话框
void MainWindow::on_filedlg_4_clicked()
{
    QString fileName = QFileDialog::getSaveFileName(this, "保存文件", "E://BaiduNetdiskDownload");
    QMessageBox::information(this, "保存文件", "您指定的保存数据的文件是: " + fileName);

}

在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QFileDialog 对话框类 的相关文章

  • QGraphicsView 和 eventFilter

    这个问题已经困扰我两天多了 所以我想我应该问一下 我在Win7上使用Qt 4 5 3 用VC2008编译 我有 MyGraphicsView 继承 QGraphicsView 和 MyFilter 继承 QObject 类 当我将 MyFi
  • 当 QML 对象不可见时防止 QML 属性绑定?

    我正在开发一个具有大量属性绑定的 QML 应用程序 数百个对象被跟踪并以不同的形式显示 例如 Qt3D QCanvas 当我在应用程序的单独页面上时 x y 位置和相对大小的属性绑定仍在发生 我怎样才能阻止他们 我知道我可以根据属性是否可视
  • QSpinBox 输入 NaN 作为有效值

    我正在尝试扩展 QSpinBox 以能够输入 NaN 或 nan 作为有效值 根据文档 我应该使用 textFromValue valueFromText 和 validate 函数来完成此操作 但我无法让它工作 因为它仍然不允许我输入除数
  • 如何在 C++ 运行时更改 QML 对象的属性?

    我想在运行时更改 QML 对象的文本 我尝试如下 但文本仍然为空 这是后端类 class BackEnd public QObject Q OBJECT Q PROPERTY QString userFieldText READ userF
  • 使用 cmake 将两种解决方案合二为一

    我有两个单独的 Visual Studio 2013 解决方案 我想将它们迁移到一个解决方案中 因为第一个解决方案 使用 Qt 充当第二个解决方案的 GUI 最后 我希望有一个结构如下的单一解决方案 Solution All Build P
  • 如何在按下托盘图标菜单操作时执行功能?

    int main int argc char argv QApplication oApp argc argv QAction action1 QMenu menu QSystemTrayIcon TrayIcon QIcon favico
  • 当我尝试构建 Qt 4.7.1 静态库时,“找不到 -ljscore”

    我尝试从最新的源构建静态 Qt 库 但出现以下错误 usr bin ld cannot find ljscore collect2 ld returned 1 exit status 如何解决这个问题呢 这是 Qt 构建系统中自 4 7 0
  • 如何创建QWidget的屏幕截图?

    我在 Qt Creator 中做作业 在其中绘制 QWidget 并且需要保存此 QWdiget 的某些部分 我试图解决这个问题 QPixmap pixmap pixmap copy rectangle rectangle is part
  • GoQt 致命错误:QAbstractAnimation:没有这样的文件或目录

    我尝试编译 Qt 来开发桌面应用程序 我按照 Qt 网站上的官方 wiki 指南的说明进行操作 当我尝试go run示例文件夹中的示例 我收到错误 去运行 home pinkya rabbit workspace go1programs s
  • Qt WinRT 应用程序无法访问文件权限被拒绝

    我需要使用 Qt 和 FFMPEG 开发 WinRT 应用程序 我根据指令构建了 WinRT 的 ffmpeghere https github com Microsoft FFmpegInterop我可以将库与我的项目链接起来 现在我需要
  • 错误 LNK2001:无法解析的外部符号 __CxxFrameHandler3

    我正在将 Qt 从 VS 2013 迁移到 Qt 5 10 1 到 VS 2015 出现以下多个链接错误 error LNK2001 unresolved external symbol CxxFrameHandler3 error LNK
  • QGraphicsScene::clear 不会改变 sceneRect

    我有一个 QGraphicsScene 场景 和 QGraphicsView graphicsView 我有一个画图的方法 当我需要重绘所有图形时 我调用这个方法 一切都好 但我意识到 scene gt clear 不会改变 sceneRe
  • 向 Qt 样式表添加特异性时丢失样式

    这是我的代码 const QString STYLE SHEET background color rgba x x x y border 1px solid gray border radius 0px border top 1px so
  • Qt 文件对话框默认后缀不起作用

    我将以下代码用于 QtQuick Dialogs 1 3 和 Qt 5 10 0 下 filedialog 的新属性 我使用 Qt Creator 5 10 默认套件构建它 import QtQuick 2 10 import QtQuic
  • 如何创建用于 QML 的通用对象模型?

    我想知道是否有任何宏或方法如何将 Qt 模型注册为 QObject 的属性 例如 我有AnimalModel http doc qt io qt 5 qtquick modelviewsdata cppmodels html qabstra
  • 更改 Qt OpenGL 窗口示例以使用 OpenGL 3.3

    我正在尝试更改 Qt OpenGL 示例以使用更现代的 opengl 版本 330 似乎合适 所以我做了 在 main cpp 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错
  • Qt - 设置不可编辑的QComboBox的显示文本

    我想将 QComboBox 的文本设置为某些自定义文本 不在 QComboBox 的列表中 而不将此文本添加为 QComboBox 的项目 此行为可以在可编辑的 QComboBox 上实现QComboBox setEditText cons
  • Qt 是否已经有了自己的 new 和 delete 运算符?

    我正在使用一个QGraphicsScene小部件并在其上显示一些点QGraphicsRectItem 这意味着要拨打很多电话new addItem 当出现时 并且removeItem delete摆脱未使用的点 当然 对于性能问题 我已经实
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • Qt GUI 应用程序中的控制台输出?

    我有一个在 Windows 上运行的 Qt GUI 应用程序 它允许传递命令行选项 在某些情况下我想向控制台输出一条消息 然后退出 例如 int main int argc char argv QApplication a argc arg

随机推荐

  • 【计算机视觉

    文章目录 一 检测相关 15篇 1 1 Representation Learning in Anomaly Detection Successes Limits and a Grand Challenge 1 2 AlignDet Ali
  • 在centos8系统上使用tigervnc-server搭建VNC

    使用tigervnc作为vncserver端 安装VNC server sudo dnf update sudo dnf install tigervnc server 生成密码 su root vncpasswd 然后按提示输入密码 配置
  • 【yolov5 6.0 源码解析】---utils /datasets.py

    yolov5中数据读取并转换成训练格式 主要涉及到四点 数据读取 cache缓存 数据增强与label对应 其他一些辅助函数 以下是自己的一些理解 如有纰漏 欢迎交流 class LoadImagesAndLabels Dataset cl
  • 智能数据血缘治理解决方案实践丨Fabarta 公开课

    导读 本文根据 Fabarta 产品总监陈振在金科创新社公开课整理而来 文章依据 Fabarta 利用自主可控的图引擎和先进的 AI 解析能力构建智能数据血缘治理解决方案的实践经验 分享了数据血缘的定义 演进过程 数据血缘平台的核心能力 以
  • java21天打卡Day12-IO流

    IO流 构造file对象 File f new File report log System out println f getPath 传参的路径 report log System out println f getAbsolutePa
  • jquery选项卡几行代码搞定

    html部分 css样式自己写 a href class item active 选项一 a gt a href class item 选项二 a div class table themeBox style background ffff
  • 警惕!这个微软Office 0day 已遭在野利用

    聚焦源代码安全 网罗国内外最新资讯 编译 代码卫士 安全研究员发现 微软Office 新0day 已遭在野利用 仅需打开一份Word文档 攻击者即可利用该漏洞通过Microsoft 诊断工具 MSDT 执行恶意PowerShell 命令 C
  • 【优化无功】教与学算法求解IEEE_33节点无功优化问题【含Matlab源码 2699期】

    一 教与学算法 TLBO 由Rao等人在2011年提出的 是一种基于群体的启发式优化算法 不需要任何算法特定参数 这种方法模拟了传统的课堂教学过程 整个优化过程包括教师阶段和学习者阶段 在教师阶段 每个学生都向最优秀的个体进行学习 在学习阶
  • 解决std::to_string(long double _Val)函数当浮点数的精度大于等于小数点后六位时,返回的字符串结果为”科学计数法”的形式

    解决std to string long double Val 函数当浮点数的精度大于等于小数点后六位时 返回的字符串结果为 科学计数法 的形式 并且去掉末尾无效的 0 代码如下 include
  • Universal Model:基于clip驱动的器官分割和肿瘤检测通用模型

    论文 https arxiv org abs 2301 00785 我看这篇主要是看看MRI的多模态融合方法的 所以会略一些东西 感兴趣细节的就翻原文好嘞 摘要 越来越多的公共数据集在自动器官分割和肿瘤检测方面显示出显著的影响 然而 由于每
  • 设置Crontab执行任务时不发送邮件

    crontab的定时任务执行后都会给root发送一封邮件 通过以下方法可以防止这种情况 SHELL bin bash PATH sbin bin usr sbin usr bin 这是第一种方法 设置MAILTO参数为空 MAILTO HO
  • 微信网页版接口详解

    一 网页版微信提供的HTTP接口 1 获取uuid 说明 用于获取显示二维码以及登录所需的uuid 标识获取二维码和扫码的为同一个用户 请求方式 GET 地址 https login wx qq com jslogin get参数 参数 示
  • WSL安装及部分报错

    WSL安装 成功过程 错误示范 第一次进行操作时 第二次安装wsl 成功过程 结合使用了微软商城的评论区的建议 在链接https wsldownload azureedge net Ubuntu 2004 2020 424 0 x64 ap
  • JAVA语言中“+”号的三种用法

    一 数字相加 当 号两边都是数字时 代表数字相加 例如 int a 1 2 a的值为3 二 字符串连接 当 号两边至少有一个是字符串时 代表字符串连接 例如 String str hello world str的值为 helloworld
  • 如何使用Mac终端给树莓派pico构建C/C++程序进行开发,以及遇到各种问题该怎么处理,不使用任何IDE或编辑器(例如VS Code)

    写本文的原因是官方的教程已经过时了 如果你现在按照官方教程来在 Mac 上进行配置 那么会遇到一堆问题 比如我几乎把能踩的 雷 都踩了 所以这里记录了完整过程 以及各种错误的原因和处理方法 不然以后换 Mac 了或者在其他平台遇到同样的问题
  • 以太坊json rpc

    Contents Hash List JSON RPC support HEX value encoding The default block parameter Curl Examples Explained JSON RPC meth
  • HCIP-DATACOM-带解析-101-150题(821)

    101 VRP平台上 当我们引入OSPF路由到ISIS的时候 如果不指定COST 开销值将默认设为16 A 正确 B 错误 正确答案 B 答案解析 102 使用如下IP前缀列表进行路由匹配 则以下哪项路由可以被匹配到 ip ip prefi
  • 【Python】Python元组学习

    Python之元组学习记录 一 元组的特点 可以容纳多个数据 可以容纳不同类型的数据 混装 数据是有序存储的 下标索引 允许重复数据存在 不可以修改 增加或删除元素等 但内部list元素可以被修改 支持while for循环 二 元组操作练
  • [现代控制理论]4_PhasePortrait爱情故事动态系统分析

    现代控制理论 11 现代控制理论串讲 完结 pdf获取 现代控制理论 10 可观测性与分离原理 观测器与控制器 现代控制理论 9 状态观测器设计 龙伯格观测器 现代控制理论 8 5 线性控制器设计 轨迹跟踪simulink 现代控制理论 8
  • QFileDialog 对话框类

    QFileDialog 对话框类 QFileDialog 对话框类是 QDialog 类的子类 通过这个类可以选择要打开 保存的文件或者目录 关于这个类我们只需要掌握一些静态方法的使用就可以了 通用参数 parent 当前对话框窗口的父对象