1.IDE:QTCreator
2.实验:使用MainWindow做一个文本编辑器
3.记录
(1)创建几个功能
(2)为几个功能写实现,这里不能使用转到槽,需要自己用connect函数关联。这里的功能是QAction类,退格搜查其槽函数来进行绑定
(3)打开文件操作,主要查看QFileDialog类说明还有QFile类说明,QFileDialog用于选取文件,QFile用于操作文件。
(4)文件操作基本流程:
a.通过QFileDialog得到文件名字
b.将得到的名字给QFile创建对象进行操作。
c.QFile打开创建的对象设置权限(只读,只写,读写)
d.QFile操作对象(read,write)
e.操作完毕(close)
(5)写入的数据期望为QByteArrary,如何将其转换为该类型使用append函数,具体查看类说明
bytearray.append(ui->textEdit->toPlainText());file.write(bytearray);
(6)对于文件保存,可以存储不同类型的文件,只需要自己添加后缀即可
4.代码
MainWindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void CreateNewFile(void); //创建新文件void Exit(void); //退出void OpenFile(void); //打开文件void SaveFile(void); //保存文件
private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
MainWindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <QFile>
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);connect(ui->CreateFile,&QAction::triggered,this,&MainWindow::CreateNewFile); //关联创建新文件函数sconnect(ui->OpenFile,&QAction::triggered,this,&MainWindow::OpenFile); //关联打开文件函数connect(ui->Exit,&QAction::triggered,this,&MainWindow::Exit); //关联退出函数connect(ui->SaveFile,&QAction::triggered,this,&MainWindow::SaveFile); //关联保存函数
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::CreateNewFile() //创建新文件
{ui->textEdit->clear();this->setWindowTitle("新建文本.txt");
}void MainWindow::Exit() //退出
{this->close();
}void MainWindow::OpenFile() //打开文件
{QString filename=QFileDialog::getOpenFileName(this,"选择打开的文件","C:/Users/***/Desktop/hook","*.*"); //打开文件夹,并且不筛选文件后缀QFile file(filename);file.open(QIODevice::ReadWrite);QByteArray filecontent=file.readAll();ui->textEdit->setText(filecontent);file.close();this->setWindowTitle(filename);
}void MainWindow::SaveFile() //保存文件
{QString savefilename=QFileDialog::getSaveFileName(this,"保存为","C:/Users/***/Desktop/hook/","*.*");QFile file(savefilename);file.open(QIODevice::WriteOnly);QByteArray bytearray;bytearray.append(ui->textEdit->toPlainText());file.write(bytearray);file.close();this->setWindowTitle(savefilename);
}