【QT】文件读写,文件对话框

news2024/9/20 11:32:04

一.QFile类

QFile提供了从文件中读取和写入数据的能力。
我们通常会将文件路径作为参数传给QFile的构造函数。不过也可以在创建好对象最后,使用setFileName()来修改。

QFile是QIODevice的子类,利用QFile可以对文件进行打开,读取,写入的操作。
可以使用QDataStream或QTextStream类来读写文件,也可以用QIODevice类自带的read()、readLine()、readAll()以及write()这样的函数。

获取一个文件的信息使用QFileInfo类。

二.读取文件/写入文件

1.直接使用其自带的读写函数read/write读取

    // File类读取
    QFile file("C:\\Users\\SlanderMC\\Desktop\\111.txt");
    file.open(QIODevice::ReadOnly|QIODevice::Text);
    char text[5000];
    file.read(text,5000);
    qDebug()<<text;
    file.close();
    //File类创建写入
    QFile file2("C:\\Users\\SlanderMC\\Desktop\\222.txt");
    file2.open(QIODevice::WriteOnly|QIODevice::Text);
    file2.write("123456");
    file2.close();

打开函数open,内部参数指的是打开文件的方式

QIODevice::NotOpen              未打开
QIODevice::ReadOnly             以只读方式打开
QIODevice::WriteOnly            以只写方式打开
QIODevice::ReadWrite            以读写方式打开
QIODevice::Append               以追加的方式打开,新增加的内容将被追加到文件末尾 
QIODevice::Truncate             以重写的方式打开,在写入新的数据时会将原有
 QIODevice::Truncate            以重写的方式打开,在写入新的数据时会将原有      数据全部                                                   清除,游标设置在文件开头。
QIODevice::Text                 在读取时,将行结束符转换成 \n;在写入时, 将行结束符转换成本地格式,例如 Win32 平台上是 \r\n
QIODevice::Unbuffered 忽略缓存

2.使用QTextStream类写入和读取文件
读入可以使用readline逐行读入,也可以使用read设置大小读入

写入时,可直接使用<<重载运算符

   //通过QTextStream读写文件
    QFile file("C:\\Users\\SlanderMC\\Desktop\\111.txt")    ;
    file.open(QIODevice::ReadWrite|QIODevice::Text);
    QTextStream stream(&file);
    //读
    stream.setEncoding(QStringConverter::Utf8);
    // QString s = stream.read(file.size());
    //  qDebug()<<s;
    while(!stream.atEnd())
    {
        QString s = stream.readLine();
        qDebug()<<s;
    }
   //写
    stream<<"1111111";

三.QT中文件对话框QFileDialog

QFileDialog::getOpenFileName(parent,“对话框名称”,“默认打开文件夹”,“文件类型”);
返回值:QString 返回选择的文件名称filename

示例:

QString filename = QFileDialog::getOpenFileName
(this,"文件选择","C:\\Users\\SlanderMC\\Desktop",tr("Text (*.txt *.doc)"));

在这里插入图片描述

四.自定义记事本,实现文件读取,文件保存

在这里插入图片描述
为按钮设置信号槽,左一按钮为打开文件,左二按钮为保存文件。

利用QFileDialog选择文件,再利用QFile类打开文件,最后使用QTextStream读取和写入文件。实现功能。

void Widget::on_btnopen_clicked()
{
    //文件内容显示到编辑栏中
    QString filename = QFileDialog::getOpenFileName(this,"open","C:\\Users\\SlanderMC\\Desktop");
    QFile file(filename);
    file.open(QIODevice::ReadOnly|QIODevice::Text);
    QTextStream stream(&file);
    stream.setEncoding(QStringConverter::Utf8);
    QString str = stream.readAll();
    ui->textEdit->setText(str);
    file.close();
}


void Widget::on_btnsave_clicked()
{
    //编辑后的内容保存到文件
    QString strsave = QFileDialog::getSaveFileName(this,"保存文件","C:\\Users\\SlanderMC\\Desktop");
    QFile file(strsave);
    file.open(QIODevice::WriteOnly|QIODevice::Text);
    QTextStream stream(&file);
    stream<<ui->textEdit->toPlainText();
    file.close();
}

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

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

相关文章

Bootstrap 5.3版本创建常用页面

你可以根据自己的主题需求来自定义样式。Bootstrap提供了丰富的CSS类和组件&#xff0c;使得创建响应式、移动优先的网站变得简单。下面我将指导你如何基于Bootstrap 5.3来编写一个简单但自定义主题的页面。 引入Bootstrap 首先&#xff0c;确保你的HTML文件中已经正确引入了B…

Vue学习:v-model绑定文本框、单选按钮、下拉菜单、复选框等

v-model指令可以在组件上使用以实现双向绑定&#xff0c;之前学习过v-model绑定文本框和下拉菜单&#xff0c;今天把表单的几个控件单选按钮radio、复选框checkbox、多行文本框textarea都试着绑定了一下。 一、单行文本框和多行文本框 <p>1.单行文本框</p> 用户名…

程序员日志之DNF编年史

目录 传送门正文日志1、概要2、超高度总结概括3、详细编年史3.1、大背景3.2、冒险家 传送门 SpringMVC的源码解析&#xff08;精品&#xff09; Spring6的源码解析&#xff08;精品&#xff09; SpringBoot3框架&#xff08;精品&#xff09; MyBatis框架&#xff08;精品&…

YOLOv5改进 | 模块缝合 | C3 融合RFCAConv增强感受野空间特征 【二次融合 小白必备】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv5入门 改…

飞牛fnOS安装KDE桌面

飞牛fnOS安装KDE桌面 这段时间新出的nas系统飞牛os真不错&#xff0c;基于debian的可折腾性又高了不少&#xff0c;今天就来给这个系统装个桌面&#xff0c;插上显示器也能当个电脑自己进自己的管理界面&#xff0c;播放下视频&#xff0c;上上网啥的。 文章目录 飞牛fnOS安装…

问卷调查,动静IP应该如何选择?

在探讨问卷调查这一领域时&#xff0c;选择使用动态IP还是静态IP&#xff0c;成为了许多从业者及市场研究者面临的重要决策&#xff0c;它不仅关乎数据收集的效率与质量&#xff0c;还直接影响到问卷调查的合法性与安全性。本文将从多个维度深入分析这两种IP类型的优劣&#xf…

python-网页自动化(三)

如果遇到使用 ajax 加载的网页&#xff0c;页面元素可能不是同时加载出来的&#xff0c;这个时候尝试在 get 方法执行完 成时获取网页源代码可能并非浏览器完全加载完成的页面。所以&#xff0c;这种情况下需要设置延时等待一定时间&#xff0c;确保全部节点都加载出来。 那么&…

每日一练8:dd爱框框(含链接)

1.链接 登录—专业IT笔试面试备考平台_牛客网 2.题目 3.代码 #include<iostream> #include<vector>using namespace std;const int N 1e7 5;int n,x;vector<int> v(N);int main() {cin >> n >> x;for(int i 0; i < n;i) cin >> v…

服务端性能测试:行业流行性能监控工具介绍

行业流行性能监控工具有哪些 Linux 自带命令 Vmstat&#xff0c;Top 等 Nmon Collectd InfluxDB Grafana Prometheus Grafana 行业流行性能监控工具的介绍 Linux 自带命令 Vmstat&#xff0c;Top 等 vmstat 和 top 都是 Linux 系统自带的命令&#xff0c;提供了实时的…

每日一练:轮转数组

一、题目要求 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: …

hive时间函数

一、随机示例&#xff08;想到哪里写哪里&#xff09; 1.系统时间函数 查询 select current_timestamp --当前格式化时间,current_date --当前格式化日期,unix_timestamp() --当前unix时间戳 结果&#xff1a; 2.时间函数转换 查询 --将时间戳转化为格式化时间 sel…

微片水凝胶如何用于4D生物打印?快来了解一下!

大家好&#xff0c;今天我们来聊聊一项4D 活细胞生物打印技术——《Jammed Micro-Flake Hydrogel for 4D Living Cell Bioprinting》发表于《Advanced Materials》。在组织器官再生应用中&#xff0c;构建具有复杂几何形状和功能的载细胞结构至关重要。而水凝胶基4D生物墨水的发…

免费 U 盘数据恢复 - 用 4 种免费方法从随身U 盘恢复文件

如何在不使用软件的情况下从 USB 驱动器恢复已删除的文件&#xff1f;如何取消删除 USB 闪存驱动器&#xff1f;首先&#xff0c;不要对拇指驱动器进行任何进一步的更改。然后下载奇客数据恢复&#xff0c;这是一款免费的U 盘恢复工具&#xff0c;能够从各种问题中恢复笔式驱动…

网络层协议-ARP协议

网络层协议-ARP协议 1&#xff09;概述 ARP&#xff1a;地址解析协议&#xff0c;作用&#xff1a;根据IP地址查询MAC地址 数据包发送前需要进行封包&#xff0c;在数据链路层需要封装源mac地址是自己的mac&#xff0c;目的mac地址是别人&#xff0c;但是不知道别人的mac地址…

西门子WinCC开发笔记(一):winCC西门子组态软件介绍、安装

文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/142060535 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、Op…

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

&#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系列 &#x1f308;Linux学习专栏&#xff1a; 南桥谈Linux &#x1f308;数据结构学习专栏&#xff1a; 数据结构杂谈 &#x1f308;数据…

为什么RAG对下一代AI开发至关重要

RAG&#xff08;检索增强生成&#xff09;是一种突破性技术&#xff0c;它将信息检索与文本生成相结合&#xff0c;以提高人工智能系统的知识和准确性。利用 RAG 可以帮助开发人员确保应用程序响应具有最丰富的上下文和准确性&#xff0c;因为它可以访问原始模型训练之外的精选…

解决samba无权限创建文件问题

将我服务器利用samba工具映射到到电脑后&#xff0c;没有权限在特定的文件里写文件&#xff0c;比如在mcu这个文件夹里面没有写文件的权限。 查看mcu文件夹的用户属性&#xff0c;属于root属性。 rootzwzn2064-CVN-Z690D5-GAMING-PRO:/home/zwzn2064# ls -ll total 9714860 dr…

MySQL 自学笔记(入门基础篇,含示例)

目录 一、基础1.变量2.运算符 二、数据库与表1.创建数据库2.表的增删与修改&#xff08;1&#xff09;表的创建与删除&#xff08;2&#xff09;表的修改&#xff08;3&#xff09;其他指令 3.属性约束4.数据操作&#xff08;1&#xff09;数据更新&#xff08;2&#xff09;数…

Hive任务优化参数整理

Hive本身是个基于hdfs的结构化数据管理工具&#xff0c;虽然在后面的发展中允许底层接入其他的数据源&#xff0c;比如第三方数据服务这种基础架构&#xff0c;但是它从立意上来说&#xff0c;它不适合用来做高性能查询引擎&#xff0c;反而在传统离线数据仓库中它有着自身的优…