#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);
}
相关推荐
惊讶的猫37 分钟前
工具选对之后还不够:商城 Agent 的参数与权限治理
开发语言·python
cmpxr_41 分钟前
【MicroPython】如何刷新ESP8266的固件
开发语言·micropython
搭贝1 小时前
上厕所的时间搭好一套系统:AI自动生成实测
开发语言·人工智能·低代码·ai·php·搭贝
智感子1 小时前
智能称重·数据上云:从仪表读数到可追溯的计量凭证
开发语言·php
\光辉岁月/2 小时前
7.javase-面向对象
java·开发语言
weixin_531094692 小时前
heap_4内存管理
java·开发语言·算法
疯狂的维修2 小时前
关于用C#写电机起保停控制
开发语言·c#
geovindu3 小时前
rust: Abstract Factory pattern
开发语言·后端·设计模式·rust·抽象工厂模式
“AI国潮设计-小江”3 小时前
《Python+SDXL实战:用ControlNet批量生成“英歌舞麻将糕”IP,附自动化脚本与商用思路》
开发语言·人工智能·python·prompt·aigc
Cc.Y3 小时前
Java零基础入门:封装与继承 —— 从“裸奔“到“穿衣服“,从“重复造轮子“到“站在巨人肩膀上“
java·开发语言