QT7.0完成自定义文件txt读写操作实用

在这里插入图片描述
QT7.0完成自定义文件txt读写操作实用
老样子,直接上代码和结果。
调试的注释都有的。

首先对于pro文件

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++17
CONFIG += console

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp \
    widget.cpp

HEADERS += \
    widget.h

FORMS += \
    widget.ui

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

对于headers文件,有widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTreeWidgetItem>//自行
#include<QFile>
#include<QFileDialog>


QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

    //自行定义
    void InitUi();
    void UpdateParentItem(QTreeWidgetItem *item);


private slots:
    void on_pushButton_clicked();

    void on_pushButton_3_clicked();

    void on_pushButton_4_clicked();
private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

之后,对于sources文件,有
main.cpp

#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

widget.cpp有

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

#include<QFile>
#include<QFileDialog>
#include<QTreeWidgetItem>

#include <QtCore/QCoreApplication>
#include <QtCore/QList>
#include <QTextStream>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    setWindowTitle("number001");
    QStringList str01;
    str01<<"name01";
    //    ui->treeWidget->setHeaderLabels(str01);

}

QTextStream cin(stdin, QIODevice::ReadOnly);

QTextStream cout(stdout, QIODevice::WriteOnly);

QTextStream cerr(stderr, QIODevice::WriteOnly);

//QT怎么用cout cin cerr需要自行定义


void Widget::on_pushButton_clicked()
{
    QString path=QFileDialog::getOpenFileName(this,"open","../");//获取读入文件的路径表示可
    //以读入所有类型的文
    //件,也可以指定文件类型
    if(path.isEmpty()==false)//如果非空
    {
        QFile file(path);//创建文件对象
        //只读方式,默认只读UTF-8
        bool isok=file.open(QIODevice::ReadOnly);//以只读的方式打开
        if(isok)
        {
            //读文件,一次性读完
            // QByteArray array=file.readAll();//因为这个方法返回的是一个字节数组
            //一行一行读
            QByteArray array;
            while(file.atEnd()==false)
            {
                array+=file.readLine();
            }
            //显示到编辑区
            ui->textEdit->setText(array);
        }
        file.close();//关闭文件
    }
}



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


void Widget::on_pushButton_3_clicked()
{
    QString path=QFileDialog::getOpenFileName(this,"open","../");//获取读入文件的路径表示可
    //以读入所有类型的文
    //件,也可以指定文件类型
    if(path.isEmpty()==false)//如果非空
    {
        QFile file(path);//创建文件对象
        //只读方式,默认只读UTF-8
        bool isok=file.open(QIODevice::ReadOnly);//以只读的方式打开
        if(isok)
        {
            //读文件,一次性读完
            // QByteArray array=file.readAll();//因为这个方法返回的是一个字节数组
            //一行一行读
            QByteArray array;
            while(file.atEnd()==false)
            {
                array+=file.readLine();
            }
            //显示到编辑区
            ui->textEdit->setText(array);
        }
        file.close();//关闭文件
    }
}

void Widget::on_pushButton_4_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)
        {
            //获取编辑区内容
            QString str=ui->textEdit->toPlainText();
            file.write(str.toUtf8());
            //file.write(str.toStdString().data());//将String类型转换成char*类型,也是UTF8
        }
        file.close();
    }

}


对于ui文件自行配置,如图所示
在这里插入图片描述最终结果,另一种情况的测试

在这里插入图片描述
在这里插入图片描述
结果展示界面会有一定的差异。
在这里插入图片描述

名称什么的都可以自行修改,。
在这里插入图片描述

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海宝7号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值