#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);
}
相关推荐
IT技术分享社区10 分钟前
C#实战:使用腾讯云识别服务轻松提取火车票信息
开发语言·c#·云计算·腾讯云·共识算法
极客代码13 分钟前
【Python TensorFlow】入门到精通
开发语言·人工智能·python·深度学习·tensorflow
疯一样的码农19 分钟前
Python 正则表达式(RegEx)
开发语言·python·正则表达式
&岁月不待人&42 分钟前
Kotlin by lazy和lateinit的使用及区别
android·开发语言·kotlin
StayInLove1 小时前
G1垃圾回收器日志详解
java·开发语言
无尽的大道1 小时前
Java字符串深度解析:String的实现、常量池与性能优化
java·开发语言·性能优化
爱吃生蚝的于勒1 小时前
深入学习指针(5)!!!!!!!!!!!!!!!
c语言·开发语言·数据结构·学习·计算机网络·算法
binishuaio1 小时前
Java 第11天 (git版本控制器基础用法)
java·开发语言·git
zz.YE1 小时前
【Java SE】StringBuffer
java·开发语言
就是有点傻1 小时前
WPF中的依赖属性
开发语言·wpf