当前位置: 首页 > 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;接收…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

《Docker》架构

文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器&#xff0c;docker&#xff0c;镜像&#xff0c;k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理

在城市的某个角落&#xff0c;一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延&#xff0c;滚滚浓烟弥漫开来&#xff0c;周围群众的生命财产安全受到严重威胁。就在这千钧一发之际&#xff0c;消防救援队伍迅速行动&#xff0c;而豪越科技消防一体化安全管控平台构建的消防“…...

C++--string的模拟实现

一,引言 string的模拟实现是只对string对象中给的主要功能经行模拟实现&#xff0c;其目的是加强对string的底层了解&#xff0c;以便于在以后的学习或者工作中更加熟练的使用string。本文中的代码仅供参考并不唯一。 二,默认成员函数 string主要有三个成员变量&#xff0c;…...