Qt文件读写
Qt中文件读写类简述
包含头文件#include <QFile>
读写模式如下 枚举

文件读写步骤
1 先使用string 类型来接受打开文件的返回值
QFileDialog::getOpenFileName(this,"文件","./"); //打开一个文件
2 构建文件对象
Qfile ff (qstring)接受打开文件的返回值
打开文件读写模式 只读 只写等等
最后记得关闭文件
文件读写代码展示
connect(ui->filebutton,&QPushButton::clicked,this,[this](){QString abc = QFileDialog::getOpenFileName(this,"文件","./");ui->lineEdit->setText(abc);//textedit 中读取文件QFile ff(abc);//构建文件对象if(!ff.open(QIODevice::ReadOnly)) return ;//文件打开失败while(!ff.atEnd()){char str[1020]={0};ff.readLine(str,sizeof str);ui->textEdit->append(str);//一行一行添加}ff.close(); });
文件保存:
QFileDialog::getSaveFileName(this,"另存为","./aabc.txt");//保存文件
//保存二进制
void MainWindow::on_bin_clicked()
{//第四个参数过滤掉其他bin文件QString filename = QFileDialog::getOpenFileName(this,"dk","./we.bin","*.bin");QFile ff(filename);if(!ff.open(QIODevice::WriteOnly)) return;//创建数据流对象//传入文件对象指针QDataStream fou(&ff);fou<<122;//重载了<< 类似cout 输出fou<<"sss";ff.close();
}
void MainWindow::on_zz_clicked()
{QString name = QFileDialog::getSaveFileName(this,"duq","./","*.bin");QFile ff(name);if(ff.open(QIODevice::ReadOnly)) return ;QDataStream kou(&ff);int num;QString str; //读取后放到num 和str中kou>>num;kou>>str;qDebug()<<num<<str;ff.close();}
QT中文件配置文件相关操作
比如一个滑动条和一个label 当我下次运行该程序时仍为我上一次操作的值
QSettings ste("config.ini"); 配置文件
void MainWindow::on_horizontalSlider_valueChanged(int value)
{ui->label->setText("当前音量"+ QString::number(value)+"%");//创建配置文件对象QSettings ste("config.ini");//保存变量到配置文件中ste.setValue("volume",value);
}
ste.setValue("volume",value); 将值送入volume中
读取配置文件
//读取配置文件QSettings sett("config.ini");ui->horizontalSlider->setValue(sett.value("volume").toInt());//拿到配置文件中的值

关闭后再次运行 仍为41
使用Qt实现一个简要的文本编辑器 1 可以打开文件显示到编辑器中 2 可编辑文件内容 保存文件 无需快捷保存 3可以另存为新的文件 分文件编写
.h文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QTextEdit>
#include <QFileDialog>
#include <QFile>
#include <QTextStream>
#include <QAction>
#include <QMenuBar>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void onOpenFile();void onSaveFile();void onSaveAsFile();private:Ui::MainWindow *ui;QString currentFilePath;QTextEdit *editor;
};
#endif // MAINWINDOW_H
.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 设置中央部件为文本编辑器editor = new QTextEdit(this);setCentralWidget(editor);// 创建菜单栏QMenuBar *menuBar = new QMenuBar(this);setMenuBar(menuBar);// 创建文件菜单QMenu *fileMenu = menuBar->addMenu(tr("&File"));// 创建打开文件动作QAction *openAction = new QAction(tr("&Open"), this);fileMenu->addAction(openAction);connect(openAction, &QAction::triggered, this, &MainWindow::onOpenFile);// 创建保存文件动作QAction *saveAction = new QAction(tr("&Save"), this);fileMenu->addAction(saveAction);connect(saveAction, &QAction::triggered, this, &MainWindow::onSaveFile);// 创建另存为文件动作QAction *saveAsAction = new QAction(tr("Save &As..."), this);fileMenu->addAction(saveAsAction);connect(saveAsAction, &QAction::triggered, this, &MainWindow::onSaveAsFile);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::onOpenFile()
{// 打开文件对话框QString filePath = QFileDialog::getOpenFileName(this, tr("Open File"), "", tr("Text Files (*.txt);;All Files (*)"));if (!filePath.isEmpty()) {QFile file(filePath);if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {QTextStream in(&file);editor->setText(in.readAll());file.close();currentFilePath = filePath;}}
}void MainWindow::onSaveFile()
{if (currentFilePath.isEmpty()) {onSaveAsFile();} else {QFile file(currentFilePath);if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {QTextStream out(&file);out << editor->toPlainText();file.close();}}
}void MainWindow::onSaveAsFile()
{QString filePath = QFileDialog::getSaveFileName(this, tr("Save File As"), "", tr("Text Files (*.txt);;All Files (*)"));if (!filePath.isEmpty()) {QFile file(filePath);if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {QTextStream out(&file);out << editor->toPlainText();file.close();currentFilePath = filePath;}}
}
主函数
#include <QApplication>
#include "mainwindow.h"int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}
相关文章:
Qt文件读写
Qt中文件读写类简述 包含头文件#include <QFile> 读写模式如下 枚举 文件读写步骤 1 先使用string 类型来接受打开文件的返回值 QFileDialog::getOpenFileName(this,"文件","./"); //打开一个文件 2 构建文件对象 Qfile ff (qstring)接受打…...
发现了一套超厉害的英语资料,绝对YYDS
昨某节目主持人与我闲聊英语学习的事情。 她工作数年,希望提升英文资讯的阅读能力。她主持的是中文节目,但节目对个人的知识广度和深度要求颇高。 现在的知识又太泛太杂,你需要了解国外最新资讯,多获得一手资料,面对节…...
C# new关键字作用
在C#中,当子类定义了与父类同名的字段或者方法时,可以使用new关键字进行隐藏。使用new和不使用new关键字的区别主要在于如何处理字段的隐藏和可访问性。 讲人话就是,假设父类的字段或方法,子类是可以直接访问的(publi…...
Python代码之特征工程基础
1. 什么是特征工程 特征工程是指从原始数据中提取、转换和创建适合于模型训练的数据特征的过程。它是机器学习和深度学习中非常重要的一步,因为好的特征工程可以显著提高模型的性能。特征工程涉及从数据中提取有意义的信息,并将其转换为模型可以理解和使…...
低代码平台:效率利器还是质量妥协?
目录 低代码平台:效率利器还是质量妥协? 一、引言 二、低代码平台的定义和背景 1、什么是低代码平台? 2、低代码平台的兴起 三、低代码开发的机遇 1、提高开发效率 2、降低开发成本 3、赋能业务人员 四、低代码开发的挑战 1、质量…...
大数据-Big Data
1. 简介 1.1. 主要特点 大数据(Big Data)是指规模巨大、复杂多变的数据集合,这些数据集来源于多个不同的源,包括社交媒体、移动设备、物联网、传感器等。大数据的主要特点如下: 数据量大(Volume):大数据的起始计量单位是PB(1024TB)、EB(1024PB,约100万TB)或ZB(…...
Redis的持久化的策略
Redis的持久化的策略 官方文档说明 AOF持久化策略RDB持久化的策略 AOF持久化策略 AOF持久性记录服务器接收到的每个写操作,然后,可以在服务器启动时再次重播这些操作,重建原始数据集,使用与Redis协议本身相同的格式记录命令。…...
【八】Zookeeper3.7.1集成Hadoop3.3.4集群安装
文章目录 1.基本原理2.下载并解压ZooKeeper3.配置环境变量4.配置ZooKeeper5.创建数据目录并初始化myid6.启动ZooKeeper7.配置ZooKeeper集成到Hadoop8.重启Hadoop9.ZooKeeper状态检查 1.基本原理 ZooKeeper 是一个分布式协调服务,用于分布式系统中管理配置信息、命名…...
【C/C++笔记】:易错难点3 (二叉树)
选择题 🌈eg1 一棵有15个节点的完全二叉树和一棵同样有15个节点的普通二叉树,叶子节点的个数最多会差多少个()? 正确答案: C A. 3 B. 5 C. 7 D. 9 解析:普通二叉树的叶子节…...
一篇文章解决Webpack
一:什么是webpack webpack是一个用于现代JavaScript应用程序的静态模块打包工具。本质是一个软件包, 静态模块包括以下:html、css、js、图片等固定内容的文件 二:webpack工作原理 当 webpack 处理应用程序时,它会在内…...
速盾:cdn如何解析php文件中的图片?
CDN(Content Delivery Network)是一种通过分布在全球各地的服务器来加速网络内容传输的技术。CDN通过将内容缓存在离用户最近的服务器上,提供更快的访问速度和更好的用户体验。在解析PHP文件中的图片时,CDN可以起到以下几个方面的…...
如何快速实现MODBUS TCP转Profinet——泗博网关EPN-330
泗博网关EPN-330可作为PROFINET从站,支持与西门子S7-200 SMART/300/400/1200/1500全系列PLC以及具有PROFINET主站的系统无缝对接,而Modbus TCP端,可以与Modbus TCP从站设备、主站PLC、DCS系统以及组态软件等进行数据交互。 通过EPN-330&…...
什么是实时数据仓库?它有哪些不可替代之处?
【实时数据仓库】可以分开来理解: ✅【实时数据】:即能够快速处理数据,且几乎无延迟的提供最新的数据的能力。 ✅【仓库管理】:可以理解为对仓库的库存控制、对仓库的存储优化以及协调物流。 那么实时数据仓库就是:…...
《Ubuntu22.04环境下的ROS2学习笔记1》
一、在ROS2环境下创建工作空间 ROS2相比ROS1来说工作空间的创建有较大的不同,同时工作空间中的四个目录被更换为src(存放源码) , build(存放编译的中间文件) , install(存放可执行文件) , log(日志)。同时命令行也有些许变化&…...
Jupyter nbextensions安装与使用
Jupyter nbextensions的安装与使用主要包括以下几个步骤: 一、安装步骤 确保已安装Jupyter Notebook 如果尚未安装Jupyter Notebook,可以使用pip命令进行安装: pip install jupyter 安装nbextensions 使用pip命令安装nbextensions包&#x…...
java.nio.charset.MalformedInputException: Input length = 1
1、问题 项目启动报错: Exception in thread "main" org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length 1提示原因: Caused by: java.nio.charset.MalformedInputException: Input length 1…...
yarn的安装和配置使用
文章目录 一、前言二、yarn简介三、yarn的特点四、yarn安装五、配置yarn5.1 全局配置5.2 项目配置 五、使用yarn六、yarn常用命令七、版本管理 一、前言 Yarn是facebook发布的一款取代npm的包管理工具,本文给大家介绍yarn的安装和使用,最详细教程&#…...
JVM知识总结(即时编译)
文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 即时编译 Java编译器经过解释执行,其执行速度必然会比…...
【网络】TCP协议——TCP连接相关、TCP连接状态相关、TCP数据传输与控制相关、TCP数据处理和异常、基于TCP应用层协议
文章目录 Linux网络1. TCP协议1.1 TCP连接相关1.1.1 TCP协议段格式1.1.2 确定应答(ACK)机制1.1.3 超时重传机制 1.2 TCP连接状态相关1.2.1 TIME_WAIT状态1.2.2 CLOSE_WAIT 状态 1.3 TCP数据传输与控制相关1.3.1 滑动窗口1.3.2 流量控制1.3.3 拥塞控制1.3.4 延迟应答1.3.5 捎带应…...
一起看看JavaAgent到底是干啥用的
JavaAgent 简介 定义: JDK提供的一种能力,允许开发者在运行时对已有class代码进行注入和修改。用途: 增强和修改类执行,如IntelliJ IDEA使用JavaAgent增强JVM行为实现调试功能。 JavaAgent 工作原理 premain 方法: JavaAgent的入口点,接收…...
MySQL数据库用户密码加密存储机制_Authentication Plugin配置
MySQL 8.0默认使用caching_sha2_password插件加密密码,采用SHA-256加盐哈希并缓存认证状态;旧客户端因不兼容该插件而无法连接,需通过ALTER USER切换为mysql_native_password或配置default_authentication_plugin。MySQL 8.0 默认用 caching_…...
CV-CUDA快速入门:10分钟学会构建你的第一个GPU加速图像处理应用
CV-CUDA快速入门:10分钟学会构建你的第一个GPU加速图像处理应用 【免费下载链接】CV-CUDA CV-CUDA™ is an open-source, GPU accelerated library for cloud-scale image processing and computer vision. 项目地址: https://gitcode.com/gh_mirrors/cv/CV-CUDA …...
BongoCat桌宠自定义开发全面解析:从设计到社区贡献的实战指南
BongoCat桌宠自定义开发全面解析:从设计到社区贡献的实战指南 【免费下载链接】BongoCat 🐱 跨平台互动桌宠 BongoCat,为桌面增添乐趣! 项目地址: https://gitcode.com/gh_mirrors/bong/BongoCat 开源项目设计理念与架构解…...
BetterGenshinImpact多开功能终极指南:同时管理多个原神账号的完整方案
BetterGenshinImpact多开功能终极指南:同时管理多个原神账号的完整方案 【免费下载链接】better-genshin-impact 📦BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙…...
GTE-Base-ZH赋能Java应用:SpringBoot集成与语义搜索实战
GTE-Base-ZH赋能Java应用:SpringBoot集成与语义搜索实战 最近在做一个电商后台的搜索功能升级,用户反馈说,用关键词搜商品经常找不到想要的东西。比如用户搜“适合夏天穿的轻薄外套”,传统的搜索可能只匹配到“外套”,…...
购物团截图自动马赛克地址,手机号码
订单截图隐私信息自动脱敏工具一、工具概述 本工具是基于 Python OCR 技术开发的电商订单截图隐私自动脱敏工具,针对淘宝、京东、拼多多等主流电商平台订单截图,自动识别并对收货地址、手机号码等敏感信息进行马赛克打码,实现隐私保护。 工具…...
Scio与Google Cloud Dataflow集成:构建可扩展大数据解决方案
Scio与Google Cloud Dataflow集成:构建可扩展大数据解决方案 【免费下载链接】scio A Scala API for Apache Beam and Google Cloud Dataflow. 项目地址: https://gitcode.com/gh_mirrors/sc/scio Scio是一个基于Apache Beam的Scala API,专为Goog…...
searchall工具全指南:安装部署+编译构建+实战使用
一、工具简介 searchall是一款专注于敏感信息扫描的开源工具,核心功能是快速检索文件中的账号、密码、API密钥等敏感数据,同时支持解密浏览器保存的账户密码,适配Windows、Linux、macOS三大系统。其优势在于轻量易用、精准高效,本…...
#CSDN博客-智能客服RAG实战
基于 Milvus Ollama(BGE-M3) DeepSeek 的智能客服 RAG 实战 一、项目背景 在社保、医保、就业等公共服务领域,每天都有大量群众拨打热线咨询相似问题。传统人工客服成本高、效率低,而基于关键词匹配的机器人又难以理解用户的真实意图。 本项目基于 …...
排序算法指南:归并排序
前言:归并排序的核心思想是利用分治法(Divide and Conquer)策略,它将一个大的问题分解成小的、容易解决的子问题,然后将子问题的解合并起来,从而得到原问题的解。一、归并排序的核心思想分(Divi…...
