最近在弄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上,最后文件关闭。最后结果如下所示
点击此处登录后即可评论