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函数,具体查看类说明
cpp
bytearray.append(ui->textEdit->toPlainText());
file.write(bytearray);
(6)对于文件保存,可以存储不同类型的文件,只需要自己添加后缀即可
4.代码
MainWindow.h
cpp
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
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
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); //关联创建新文件函数s
connect(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);
}