当前位置: 首页 > news >正文

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

昨某节目主持人与我闲聊英语学习的事情。 她工作数年&#xff0c;希望提升英文资讯的阅读能力。她主持的是中文节目&#xff0c;但节目对个人的知识广度和深度要求颇高。 现在的知识又太泛太杂&#xff0c;你需要了解国外最新资讯&#xff0c;多获得一手资料&#xff0c;面对节…...

C# new关键字作用

在C#中&#xff0c;当子类定义了与父类同名的字段或者方法时&#xff0c;可以使用new关键字进行隐藏。使用new和不使用new关键字的区别主要在于如何处理字段的隐藏和可访问性。 讲人话就是&#xff0c;假设父类的字段或方法&#xff0c;子类是可以直接访问的&#xff08;publi…...

Python代码之特征工程基础

1. 什么是特征工程 特征工程是指从原始数据中提取、转换和创建适合于模型训练的数据特征的过程。它是机器学习和深度学习中非常重要的一步&#xff0c;因为好的特征工程可以显著提高模型的性能。特征工程涉及从数据中提取有意义的信息&#xff0c;并将其转换为模型可以理解和使…...

低代码平台:效率利器还是质量妥协?

目录 低代码平台&#xff1a;效率利器还是质量妥协&#xff1f; 一、引言 二、低代码平台的定义和背景 1、什么是低代码平台&#xff1f; 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持久性记录服务器接收到的每个写操作&#xff0c;然后&#xff0c;可以在服务器启动时再次重播这些操作&#xff0c;重建原始数据集&#xff0c;使用与Redis协议本身相同的格式记录命令。…...

【八】Zookeeper3.7.1集成Hadoop3.3.4集群安装

文章目录 1.基本原理2.下载并解压ZooKeeper3.配置环境变量4.配置ZooKeeper5.创建数据目录并初始化myid6.启动ZooKeeper7.配置ZooKeeper集成到Hadoop8.重启Hadoop9.ZooKeeper状态检查 1.基本原理 ZooKeeper 是一个分布式协调服务&#xff0c;用于分布式系统中管理配置信息、命名…...

【C/C++笔记】:易错难点3 (二叉树)

选择题 &#x1f308;eg1 一棵有15个节点的完全二叉树和一棵同样有15个节点的普通二叉树&#xff0c;叶子节点的个数最多会差多少个&#xff08;&#xff09;&#xff1f; 正确答案&#xff1a; C A. 3 B. 5 C. 7 D. 9 解析&#xff1a;普通二叉树的叶子节…...

一篇文章解决Webpack

一&#xff1a;什么是webpack webpack是一个用于现代JavaScript应用程序的静态模块打包工具。本质是一个软件包&#xff0c; 静态模块包括以下&#xff1a;html、css、js、图片等固定内容的文件 二&#xff1a;webpack工作原理 当 webpack 处理应用程序时&#xff0c;它会在内…...

速盾:cdn如何解析php文件中的图片?

CDN&#xff08;Content Delivery Network&#xff09;是一种通过分布在全球各地的服务器来加速网络内容传输的技术。CDN通过将内容缓存在离用户最近的服务器上&#xff0c;提供更快的访问速度和更好的用户体验。在解析PHP文件中的图片时&#xff0c;CDN可以起到以下几个方面的…...

如何快速实现MODBUS TCP转Profinet——泗博网关EPN-330

泗博网关EPN-330可作为PROFINET从站&#xff0c;支持与西门子S7-200 SMART/300/400/1200/1500全系列PLC以及具有PROFINET主站的系统无缝对接&#xff0c;而Modbus TCP端&#xff0c;可以与Modbus TCP从站设备、主站PLC、DCS系统以及组态软件等进行数据交互。 通过EPN-330&…...

什么是实时数据仓库?它有哪些不可替代之处?

【实时数据仓库】可以分开来理解&#xff1a; ✅【实时数据】&#xff1a;即能够快速处理数据&#xff0c;且几乎无延迟的提供最新的数据的能力。 ✅【仓库管理】&#xff1a;可以理解为对仓库的库存控制、对仓库的存储优化以及协调物流。 那么实时数据仓库就是&#xff1a;…...

《Ubuntu22.04环境下的ROS2学习笔记1》

一、在ROS2环境下创建工作空间 ROS2相比ROS1来说工作空间的创建有较大的不同&#xff0c;同时工作空间中的四个目录被更换为src(存放源码) &#xff0c; build(存放编译的中间文件) &#xff0c; install(存放可执行文件) &#xff0c; log(日志)。同时命令行也有些许变化&…...

Jupyter nbextensions安装与使用

Jupyter nbextensions的安装与使用主要包括以下几个步骤&#xff1a; 一、安装步骤 确保已安装Jupyter Notebook 如果尚未安装Jupyter Notebook&#xff0c;可以使用pip命令进行安装&#xff1a; pip install jupyter 安装nbextensions 使用pip命令安装nbextensions包&#x…...

java.nio.charset.MalformedInputException: Input length = 1

1、问题 项目启动报错&#xff1a; Exception in thread "main" org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length 1提示原因&#xff1a; Caused by: java.nio.charset.MalformedInputException: Input length 1…...

yarn的安装和配置使用

文章目录 一、前言二、yarn简介三、yarn的特点四、yarn安装五、配置yarn5.1 全局配置5.2 项目配置 五、使用yarn六、yarn常用命令七、版本管理 一、前言 Yarn是facebook发布的一款取代npm的包管理工具&#xff0c;本文给大家介绍yarn的安装和使用&#xff0c;最详细教程&#…...

JVM知识总结(即时编译)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 即时编译 Java编译器经过解释执行&#xff0c;其执行速度必然会比…...

【网络】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提供的一种能力&#xff0c;允许开发者在运行时对已有class代码进行注入和修改。用途: 增强和修改类执行&#xff0c;如IntelliJ IDEA使用JavaAgent增强JVM行为实现调试功能。 JavaAgent 工作原理 premain 方法: JavaAgent的入口点&#xff0c;接收…...

MySQL数据库用户密码加密存储机制_Authentication Plugin配置

MySQL 8.0默认使用caching_sha2_password插件加密密码&#xff0c;采用SHA-256加盐哈希并缓存认证状态&#xff1b;旧客户端因不兼容该插件而无法连接&#xff0c;需通过ALTER USER切换为mysql_native_password或配置default_authentication_plugin。MySQL 8.0 默认用 caching_…...

CV-CUDA快速入门:10分钟学会构建你的第一个GPU加速图像处理应用

CV-CUDA快速入门&#xff1a;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桌宠自定义开发全面解析&#xff1a;从设计到社区贡献的实战指南 【免费下载链接】BongoCat &#x1f431; 跨平台互动桌宠 BongoCat&#xff0c;为桌面增添乐趣&#xff01; 项目地址: https://gitcode.com/gh_mirrors/bong/BongoCat 开源项目设计理念与架构解…...

BetterGenshinImpact多开功能终极指南:同时管理多个原神账号的完整方案

BetterGenshinImpact多开功能终极指南&#xff1a;同时管理多个原神账号的完整方案 【免费下载链接】better-genshin-impact &#x1f4e6;BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙…...

GTE-Base-ZH赋能Java应用:SpringBoot集成与语义搜索实战

GTE-Base-ZH赋能Java应用&#xff1a;SpringBoot集成与语义搜索实战 最近在做一个电商后台的搜索功能升级&#xff0c;用户反馈说&#xff0c;用关键词搜商品经常找不到想要的东西。比如用户搜“适合夏天穿的轻薄外套”&#xff0c;传统的搜索可能只匹配到“外套”&#xff0c…...

购物团截图自动马赛克地址,手机号码

订单截图隐私信息自动脱敏工具一、工具概述 本工具是基于 Python OCR 技术开发的电商订单截图隐私自动脱敏工具&#xff0c;针对淘宝、京东、拼多多等主流电商平台订单截图&#xff0c;自动识别并对收货地址、手机号码等敏感信息进行马赛克打码&#xff0c;实现隐私保护。 工具…...

Scio与Google Cloud Dataflow集成:构建可扩展大数据解决方案

Scio与Google Cloud Dataflow集成&#xff1a;构建可扩展大数据解决方案 【免费下载链接】scio A Scala API for Apache Beam and Google Cloud Dataflow. 项目地址: https://gitcode.com/gh_mirrors/sc/scio Scio是一个基于Apache Beam的Scala API&#xff0c;专为Goog…...

searchall工具全指南:安装部署+编译构建+实战使用

一、工具简介 searchall是一款专注于敏感信息扫描的开源工具&#xff0c;核心功能是快速检索文件中的账号、密码、API密钥等敏感数据&#xff0c;同时支持解密浏览器保存的账户密码&#xff0c;适配Windows、Linux、macOS三大系统。其优势在于轻量易用、精准高效&#xff0c;本…...

#CSDN博客-智能客服RAG实战

基于 Milvus Ollama(BGE-M3) DeepSeek 的智能客服 RAG 实战 一、项目背景 在社保、医保、就业等公共服务领域&#xff0c;每天都有大量群众拨打热线咨询相似问题。传统人工客服成本高、效率低&#xff0c;而基于关键词匹配的机器人又难以理解用户的真实意图。 本项目基于 …...

排序算法指南:归并排序

前言&#xff1a;归并排序的核心思想是利用分治法&#xff08;Divide and Conquer&#xff09;策略&#xff0c;它将一个大的问题分解成小的、容易解决的子问题&#xff0c;然后将子问题的解合并起来&#xff0c;从而得到原问题的解。一、归并排序的核心思想分&#xff08;Divi…...