一、简介
二、实现功能
三、思路
四、代码实现
五、运行结果
一、简介:这是一个简易版的文本编辑器,只能进行简单的文件读取与保存
二、实现功能:
(1)打开指定路径的文件
(2)把文件的名字显示在标签上
(3)同时打开多个文件
(4)修改文件后可进行保存
三、思路:
(1)通过先在lineedit的文本框内输入路径,当点击查看文件内容后获取输入框的路径;然后打开该路径下的文件读取里面的内容,并且把获取到的路径提取里面的文件信息把文件名设置到标签中,创建一个textEdit文本框把刚刚读取到的数据放入文本框;
(2)当点击保存文件后把文本框内的文本内容进行读取,然后写入到指定路径下的文件内
四、实现:
如图所示先通过qt自带的ui界面拉几个需要用到的控件进来,
代码实现:
mainwindow.h
(注意:这里面的使用类型转换获取内容与定义全局变量获取内容只需用上其中一个,使用时可以删掉其中的一个;建议使用类型转换)
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTextEdit>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
QTextEdit *t1 ;//新添加的
private slots:
void on_pushButton_clicked();
void on_pushButton_2_clicked();
void on_tabWidget_tabCloseRequested(int index);
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.cpp
文件
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFile>
#include <QTextEdit>
#include <qdebug.h>
#include <QFileInfo>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->tabWidget->setMovable(true);
ui->tabWidget->setTabsClosable(true);
}
MainWindow::~MainWindow()
{
delete ui;
}
//*************************使用全局变量定义来获取当前页面中的textedit******************
/*
//当点击查看文件内容后,获取文件内容然后显示在文本框内
void MainWindow::on_pushButton_clicked()
{
t1 = new QTextEdit;
//a.获取路径
QString path = ui->lineEdit->text();
//b.定义文件对象
QFile *file = new QFile(path);
//c.打开文件,只读方式
file->open(QIODevice::ReadOnly);
//d.读取文件
QByteArray buf = file->readAll();
//e.显示文件
t1->setText(buf);
//f.设置文件tab显示的文件名
QFileInfo info(path);
QString f_name = info.fileName();
ui->tabWidget->addTab(t1,f_name);
file->close();
}
//把编辑框的内容写入文件内
void MainWindow::on_pushButton_2_clicked()
{
//a.获取路径
QString path = ui->lineEdit->text();
//b.定义文件对象
QFile *file1 = new QFile(path);
//c.打开文件,只读方式
file1->open(QIODevice::WriteOnly);
//d.获取当前文本框内的内容,并写入文件
QString s = t1->toPlainText();
qDebug() << s <<endl;
file1->write(s.toUtf8());
file1->close();
}
*/
/*****************使用类型转换来获取当前页面中的textedit**************************/
void MainWindow::on_pushButton_2_clicked()
{
//a.获取路径
QString path = ui->lineEdit->text();
//b.定义文件对象
QFile *file1 = new QFile(path);
//c.打开文件,只读方式
file1->open(QIODevice::WriteOnly);
//d.使用类型转换访问派生类控件
QWidget *w = ui->tabWidget->currentWidget();
QTextEdit *et = dynamic_cast<QTextEdit *>(w);
if(et==NULL)
return ;
//e.获取当前文本框内的内容,并写入文件
QString s = et->toPlainText();
qDebug() << s <<endl;
file1->write(s.toUtf8());
file1->close();
}
//当点击查看文件内容后,获取文件内容然后显示在文本框内
void MainWindow::on_pushButton_clicked()
{
QTextEdit *t1= new QTextEdit;
//a.获取路径
QString path = ui->lineEdit->text();
//b.定义文件对象
QFile *file = new QFile(path);
//c.打开文件,只读方式
file->open(QIODevice::ReadOnly);
//d.读取文件
QByteArray buf = file->readAll();
//e.显示文件
t1->setText(buf);
//设置tab中显示的文件名
QStringList list = path.split("\\");//以\分割字符串
QString str = list[list.size()-1];//拿到最后一个字符串,即文件名
ui->tabWidget->addTab(t1,str);
file->close();
}
/********************************************************/
void MainWindow::on_tabWidget_tabCloseRequested(int index)
{
//a.设置当前页面
ui->tabWidget->setCurrentIndex(index);
//b.获取当前页面
QWidget *w = ui->tabWidget->widget(index);
delete w;
}
main.cpp
文件
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
五、运行效果: