#QT(MainWindow初尝---文本编辑器)

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);
}
相关推荐
SteveKenny36 分钟前
Python 梯度下降法(六):Nadam Optimize
开发语言·python
Hello.Reader2 小时前
深入浅出 Rust 的强大 match 表达式
开发语言·后端·rust
xrgs_shz4 小时前
MATLAB的数据类型和各类数据类型转化示例
开发语言·数据结构·matlab
来恩10037 小时前
C# 类与对象详解
开发语言·c#
komo莫莫da7 小时前
寒假刷题Day19
java·开发语言
ElseWhereR7 小时前
C++ 写一个简单的加减法计算器
开发语言·c++·算法
※DX3906※8 小时前
cpp实战项目—string类的模拟实现
开发语言·c++
wjs20248 小时前
Nginx 安装配置指南
开发语言
美味小鱼9 小时前
实践Rust:编写一个猜数字游戏
开发语言·游戏·rust