P3 QT项目----记事本(3.4)

3.4 文件选择对话框 QFileDialog
3.4.1 QFileDialog 开发流程
使用 QFileDialog 的基本步骤通常如下:
实例化 :首先,创建一个 QFileDialog 对象的实例。
QFileDialog qFileDialog;
设置模式 :根据需要设置对话框的模式,如打开文件、保存文件等。
qFileDialog.setFileMode(QFileDialog::ExistingFiles);
设置过滤器 :如果需要,可以设置文件类型过滤器,以限制用户可以选择的文件类型。
qFileDialog.setNameFilter("Text files (*.txt *.doc )");
显示对话框 :通过调用 exec() 方法显示对话框,并在用户作出选择后执行相应的操作。
 if(qFileDialog.exec())   {     // 获取用户选中的文件列表   QStringList fileName = qFileDialog.selectedFiles();     //显示打开的文件名及文件地址     // 遍历列表并处理每个文件  for(QString str : fileName){qDebug() << str;}
}
通过 selectedFiles 方法获取用户选择的文件路径列表,然后对这些文件进行相应的处理。
这是使用 QFileDialog 的基本模式。 Qt 也允许使用静态方法直接创建和显示对话框,例如
QFileDialog::getOpenFileName() ,这些方法更简单,但提供的自定义选项较少。
3.4.2 QFileDialog 打开开发案例
#include "widget.h"
#include "ui_widget.h"
#include <QFileDialog>
#include <QDebug>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}
Widget::~Widget()
{delete ui;
}
/* 打开文件 */
void Widget::on_btnOpenselect_clicked()
{/*QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),                                                     "D:/Embedded_learning/03.QT_Codeinlesson/build-P3_4_QFile_OpenDesktop_Qt_5_12_9_MinGW_64_bit-Debug",                                                     tr("Text files (*.txt *.doc )"));                                                                                     //*文件打开*/// 创建一个 QFileDialog 实例QFileDialog qFileDialog;// 设置对话框为打开文件模式qFileDialog.setFileMode(QFileDialog::ExistingFiles);        //可以多文件打开// 设置文件过滤器qFileDialog.setNameFilter("Text files (*.txt *.doc )");     //文件选择框的文件形式// 显示对话框if(qFileDialog.exec()){// 获取用户选中的文件列表QStringList fileName = qFileDialog.selectedFiles();     //显示打开的文件名及文件地址    // 遍历列表并处理每个文件     for(QString str : fileName)     {      qDebug() << str;       // 1.打开文件      QFile file;      file.setFileName(str);       if(!file.open(QIODevice::ReadOnly | QIODevice::Text))        {         qDebug() << "file open error";         }            
// 2.读取文件            
QTextStream in(&file); /* 多态,将子类进行联系 */           in.setCodec("UTF-8");           //QString context = in.read(file.size());           while(!file.atEnd())           {            QString context = in.readLine();              qDebug() << context;           }            
// 3.输出文件及关闭           file.close();       }    
}
}
3.4.3 QFileDialog 保存开发案例
#include "widget.h"
#include "ui_widget.h"#include <QFileDialog>
#include <QDebug>
Widget::Widget(QWidget *parent)   : QWidget(parent)  , ui(new Ui::Widget)
{ui->setupUi(this);
}
Widget::~Widget()
{delete ui;
}/* 保存文件 */
void Widget::on_btnDialogSave_clicked()
{/*保存文件名,文件格式,文件地址*/QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),"D:/Embedded_learning/03.QT_Codeinlesson/build
P3_4_QFile_Open-Desktop_Qt_5_12_9_MinGW_64_bit-Debug",tr("Text files (*.txt *.doc )"));qDebug() << fileName;/*写入文件内容*/// 1.打开QFile file;file.setFileName(fileName);if(!file.open(QIODevice::WriteOnly | QIODevice::Text)){qDebug() << "file open error";}// 2.写入QTextStream out(&file);out.setCodec("UTF-8"); out << "Write Dialog From The File"; // 3.关闭file.close();
}

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

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

相关文章

学习笔记(26):线性代数-张量的降维求和,简单示例

学习笔记(26)&#xff1a;线性代数-张量的降维求和&#xff0c;简单示例 1.先理解 “轴&#xff08;Axis&#xff09;” 的含义 张量的 “轴” 可以理解为 维度的方向索引 。对于形状为 (2, 3, 4) 的张量&#xff0c;3 个轴的含义是&#xff1a; 轴 0&#xff08;axis0&…

健康档案实训室:构建全周期健康管理的数据基石

一、健康档案实训室建设背景 随着“健康中国2030”战略深入推进&#xff0c;健康档案作为居民健康数据的核心载体&#xff0c;在疾病预防、慢性病管理、医疗决策等领域的价值日益凸显。在此背景下&#xff0c;健康档案实训室建设成为职业院校对接政策要求、培养专业健康管理…

【MATLAB第119期】基于MATLAB的KRR多输入多输出全局敏感性分析模型运用(无目标函数,考虑代理模型)

【MATLAB第119期】基于MATLAB的KRR多输入多输出全局敏感性分析模型运用&#xff08;无目标函数&#xff0c;考虑代理模型&#xff09; 下一期研究SHAP的多输入多输出敏感性分析方法 一、SOBOL&#xff08;无目标函数&#xff09; &#xff08;1&#xff09;针对简单线性数据…

Linux常用文件目录命令

浏览目录命令&#xff1a; ls 、pwd目录操作命令&#xff1a;cd、mkdir、rmdir浏览文件命令&#xff1a;cat、more、less、head、tail文件操作命令&#xff1a;cp、rm、mv、find、grep、tar 浏览目录命令 ls ◼ 命令名称&#xff1a;ls ◼ 命令英文原意&#xff1a;list ◼ …

PIN码vs密码,电脑登录的快捷键你用对了吗?

你是否也遇到过这样的窘境&#xff1a;信心满满地输入电脑开机密码&#xff0c;屏幕却无情地提示“密码错误”。仔细一看&#xff0c;才发现登录界面悄悄地变成了要求输入“PIN码”。这种因为混淆了PIN码和账户密码而导致的开机失败&#xff0c;相信不少朋友都碰到过。 PIN码作…

【大模型科普】AIGC技术发展与应用实践(一文读懂AIGC)

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈人工智能与大模型应用 ⌋ ⌋ ⌋ 人工智能&#xff08;AI&#xff09;通过算法模拟人类智能&#xff0c;利用机器学习、深度学习等技术驱动医疗、金融等领域的智能化。大模型是千亿参数的深度神经网络&#xff08;如ChatGPT&…

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…

XXE漏洞知识

目录 1.XXE简介与危害 XML概念 XML与HTML的区别 1.pom.xml 主要作用 2.web.xml 3.mybatis 2.XXE概念与危害 案例&#xff1a;文件读取&#xff08;需要Apache >5.4版本&#xff09; 案例&#xff1a;内网探测&#xff08;鸡肋&#xff09; 案例&#xff1a;执行命…

02-性能方案设计

需求分析与测试设计 根据具体的性能测试需求&#xff0c;确定测试类型&#xff0c;以及压测的模块(web/mysql/redis/系统整体)前期要与相关人员充分沟通&#xff0c;初步确定压测方案及具体的性能指标QA完成性能测试设计后&#xff0c;需产出测试方案文档发送邮件到项目组&…

STL优先级队列的比较函数与大堆小堆的关系

STL中的priority_queue&#xff08;优先级队列&#xff09;通过比较函数来确定元素的优先级顺序&#xff0c;从而决定其内部是形成大堆还是小堆。以下是关键点总结&#xff1a; 默认行为与大堆&#xff1a; 默认情况下&#xff0c;priority_queue使用std::less<T>作为比较…

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…

OD 算法题 B卷【反转每对括号间的子串】

文章目录 反转每对括号间的子串 反转每对括号间的子串 给出一个字符串s&#xff0c; 仅含有小写英文字母和英文括号’(’ ‘)’&#xff1b;按照从括号内到外的顺序&#xff0c;逐层反转每对括号中的字符串&#xff0c;并返回最终的结果&#xff1b;结果中不能包含任何括号&am…

如何做好一份技术文档?从规划到实践的完整指南

如何做好一份技术文档&#xff1f;从规划到实践的完整指南 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30c; 总有一行代码&#xff0c;能点亮万千星辰。 &#x1f50d; 在技术的宇宙中&#xff0c;我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…

详细讲解Flutter GetX的使用

Flutter GetX 框架详解&#xff1a;状态管理、路由与依赖注入 GetX 是 Flutter 生态中一款强大且轻量级的全功能框架&#xff0c;集成了状态管理、路由管理和依赖注入三大核心功能。其设计理念是简洁高效&#xff0c;通过最小的代码实现最大的功能&#xff0c;特别适合快速开发…

【大模型:知识库管理】--Dify接入RAGFlow 知识库

ragflow的官方文档&#xff1a; HTTP API 接口 |抹布流 --- HTTP API | RAGFlow 接着前文&#xff0c;我们已经创建了知识库&#xff0c;那么如何才能使用它呢&#xff1f; 当然也是通过网络API的形式去调用它。本文将讲解两种方式&#xff1a; Dify调用python源码调用 目录…

Vue 模板配置项深度解析

Vue 模板配置项深度解析 在 Vue 组件开发中&#xff0c;template 是定义组件视图结构的核心配置项。作为 Vue 专家&#xff0c;我将全面解析模板的各个方面&#xff0c;帮助你掌握高效构建 Vue 组件的艺术。 一、模板基础概念 1. 模板的本质 声明式渲染&#xff1a;描述 UI…

基于深度哈希与图索引的十亿级图像近重复检测系统

引言 在上一篇文章中,我们介绍了基于Vision API和SimHash的亿级图像去重方案。本文将更进一步,探讨如何应对十亿级图像库的近重复检测挑战,提出一种结合深度哈希学习与图索引的创新架构。该系统在多个关键指标上比传统方法提升显著: 检测精度提升:mAP@100达到0.92(传统方…

Python开发基础手语识别(基础框架版)

一、前期准备 想要实现这些&#xff0c;首先就是要模拟出来一个大致的框架&#xff0c;方便后续开展&#xff0c;下面的就是随便写的一个框架&#xff0c;大家凑合看看就行&#xff0c;基本上是这个意思&#xff1a; from tkinter import *w Tk() w.title("手语识别&am…

React从基础入门到高级实战:React 实战项目 - 项目一:在线待办事项应用

React 实战项目&#xff1a;在线待办事项应用 欢迎来到本 React 开发教程专栏的第 26 篇&#xff01;在之前的 25 篇文章中&#xff0c;我们从 React 的基础概念逐步深入到高级技巧&#xff0c;涵盖了组件、状态、路由和性能优化等核心知识。这一次&#xff0c;我们将通过一个…