Qt中的QFile读写文件操作

Qt中的QFile读写文件操作1.首先记录一下QString,QByteArray,char*之间的转换(1)QString->QByteArrayQStringbuf="123";QByteArraya=buf.toUtf8();//中文a=buf.toLocal8Bit();//本地编码(2)QByteArray->char*char*b=a.data…

大家好,又见面了,我是你们的朋友全栈君。

1.首先记录一下QString,QByteArray,char * 之间的转换

(1) QString -> QByteArray

QString buf = "123";
QByteArray a = buf.toUtf8(); //中文
a = buf.toLocal8Bit();  //本地编码

(2) QByteArray -> char *

char *b = a.data();

(3) char * -> QString[网络编程常常涉及到]

char *p = "abc";
QString c = QString(p);

2.QFile读写文件

在这里插入图片描述
widget.cpp源码如下:

#include "widget.h"
#include "ui_widget.h"
#include<QFile>
#include<QFileDialog>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_buttonRead_clicked()
{
    QString path = QFileDialog::getOpenFileName(this,
                                                "open",
                                                "../",
                                                "TXT(*.txt)");
    if(path.isEmpty() == false){
        //文件对象
        QFile file(path);

        //打开文件
        bool isOK = file.open(QIODevice::ReadOnly);
        if(isOK == true){
#if 0
            //读文件,默认只识别UTF-8
           QByteArray array = file.readAll();//多查看帮助文档
           //显示到编辑区
           ui->textEdit->setText(array);
#endif
            QByteArray array;
            while (file.atEnd() == false) {
                //读一行
               array +=  file.readLine();
               ui->textEdit->setText(array);
            }

        }
        file.close();
    }

}

void Widget::on_buttonSave_clicked()
{
    QString path = QFileDialog::getSaveFileName(this, "save",
                                                "../", "TXT(*.txt)");
    if (path.isEmpty() == false){
        //创建文件对象
        QFile file;
        //关联文件名字
        file.setFileName(path);
        //打开文件,只写方式
        bool isOK = file.open(QIODevice::WriteOnly);
        if (isOK == true){
            //获取编辑区内容
            QString str = ui->textEdit->toPlainText();
            //write files
            //QString -> QByteArray
           // file.write(str.toUtf8());
            //QString -> C++ string ->char*
            file.write(str.toStdString().data());
        }
    }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/130796.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 探索Qi协议「建议收藏」

    探索Qi协议「建议收藏」Qi是WPC推出的无线充电协议,面向手机和其他便携移动设备。

    2022年6月23日
    37
  • ug图改变颜色_unity改变image透明度

    ug图改变颜色_unity改变image透明度UGUI图片将其他颜色去除,显示灰色图片本例适用于UGUI一般项目中会有一些图标,当你拥有该图标显示为彩色图标,一般项目中最占资源的就是图片,不允许添加一张彩色图片,一张灰色图片,必须通过一些方法将彩色图标的颜色去掉,获取图标的灰色值。UGUI自带了一个Shader,Sprites/Default,默认给了一个添加该Shader的材质球 1Shader”U

    2025年11月11日
    7
  • Linux的DNS配置[通俗易懂]

    Linux的DNS配置[通俗易懂]一,配置实验环境1,安装DNS服务yuminstallbind利用yum将DNS服务下载下来2,关闭防火墙3,重启DNS服务4,netstat-antlpe|grepnamed查看53接口是否打开,下图表示53接口未对本机打开:5,vim/etc/named.conf编辑dns配置文件,将接口打开:6,systemctlrestartnamed重启服务让修改生效7,netstat-ant…

    2025年5月27日
    3
  • android psd预览图软件,来自psd的Android Vector drawable具有空预览

    android psd预览图软件,来自psd的Android Vector drawable具有空预览在屏幕截图中,文件中没有pathdata.因此,屏幕上没有任何内容.我正在显示VectorDrawablexml文件的内容.将内容复制到androidstudio中的空白xml文件中,并在屏幕上看到蓝色绘制的形状.android:width=”600dp”android:height=”600dp”android:viewportWidth=”800.0″android:viewportHei…

    2022年5月3日
    48
  • 云之遥全攻略 上「建议收藏」

    云之遥全攻略 上「建议收藏」转自dakkifox作者的和讯博客,很详尽很有用的一篇攻略。原贴地址:http://dakkifox.blog.hexun.com/45908818_d.html我是傻瓜分割线所谓傻瓜版,就是你照

    2022年8月2日
    6
  • 哪个游戏盒子里有JAVA_关于点和盒子游戏的Java minimax

    哪个游戏盒子里有JAVA_关于点和盒子游戏的Java minimax我想建议您完全重新考虑代码.查看代码的问题(以及为什么这里没有很多响应)是很难遵循并且很难调试.例如,什么是gs.getRemainingLines,它究竟做了什么?(为什么剩下的线而不是所有合法的线?)但是,通过一些简化,可以更容易地弄清楚发生了什么并修复它.在抽象层面,minimax只是这个过程:floatminimax_max(GameStateg){if(gisterminal…

    2022年7月7日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号