QT中实现文本文件读取并在界面显示的操作

2023年4月17日 20:15 ry 1562

最近在弄c++中的qt,想做一个文本文件编辑功能即可以选择文本文件打开,读取里面的文本内容,并将文本内容显示在文本框上面。效果如下所示

我们先在qtcreator中新建一个项目,类目选择继承QWiget类即可,记得勾选带ui的,新建完后目录如下所示

我们先来弄下布局,双击widget.ui文件,我们可以拖动左边的部件来进行布局,十分方便,如下所示

这里拖动就行,当然为了美观你可以设置自适应等各种样式,这里就不设置了,转到widget.cpp文件中,我们在这里来写实现逻辑,首先,我们要点击"打开文件",然后就弹出一个文件对话框,我们可以选择要打开的文本文件,QT中文本对话框的类是QFileDialog,可以通过文档搜索,如图所示我们选择第二个构造哈函数,第一个参数一般都是this,第二个是对话框的标题,第三个是文件路径。接下来我们要实现点击按钮实现对话框弹出操作了,这里就要用到信号和槽了,代码如下所示

#include "widget.h"
#include "ui_widget.h"
#include<QPushButton>
#include<QFileDialog>
#include<QFile>
#include<QDebug>
#include<QTextCodec>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->setWindowTitle("文本编辑器");
    this->resize(500,400);
    //匿名函数,信号和槽
    connect(ui->pushButton,QPushButton::clicked,this,[=](){

        //点击打开后新开一个文件选择窗口
        QFileDialog *qfd = new QFileDialog(this,"文件","C:/users/14499/desktop");

        //获取选中后的文件路径进行显示
        QString path = qfd->getOpenFileName();
        ui->lineEdit->setText(path);
        //设置文本编码个数
        QTextCodec *qtc = QTextCodec::codecForName("utf-8");
        //读取文件中的内容
        QFile *qf = new QFile(path);
        qf->open(QIODevice::ReadOnly);
        QByteArray qby = qf->readAll();
        ui->textEdit->setText(qtc->toUnicode(qby));
        qDebug()<<path;
        qf->close();



    });

}

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

connect接受4个参数,第一个是信号发送者,第二个是要发送的信号,第三个是信号的接收者,一般为this,第四个是槽函数,一般槽函数用匿名函数更多,这里使用了匿名函数,匿名函数里面新建了文件选择窗口对象,将选中后的文件路径显示在lineEdit上,接下来就是设置文件编码格式,默认utf-8,然后新建一个QFile对象,打开文件路径并读取全部内容显示到TextEdit上,最后文件关闭。最后结果如下所示

如果上述代码帮助您很多,可以打赏下以减少服务器的开支吗,万分感谢!

欢迎发表评论~

点击此处登录后即可评论


评论列表
暂时还没有任何评论哦...

赣ICP备2021001574号-1

赣公网安备 36092402000079号