首页 > 其他分享 >#QT(MainWindow初尝---文本编辑器)

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

时间:2024-03-16 21:58:47浏览次数:25  
标签:文件 文本编辑 QFile 初尝 void --- ui file 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函数,具体查看类说明

    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_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

#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);
}

 

标签:文件,文本编辑,QFile,初尝,void,---,ui,file,MainWindow
From: https://blog.csdn.net/byhyf83862547/article/details/136765246

相关文章

  • Leetcode刷题-动态规划
    爬楼梯链接:70.爬楼梯-力扣(LeetCode)假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢?示例1:输入:n=2输出:2解释:有两种方法可以爬到楼顶。1.1阶+1阶2.2阶示例2:输入:n=3输出:3解释:有三种方法可......
  • 关于nvim插件telescope-fzf-native在windows下未构建的问题解决
    关于nvim插件telescope-fzf-native在windows下未构建的问题解决首先进入文件夹(没有就自己创建注意文件夹名就是telescope-fzf-native.nvim)C:\Users\...\AppData\Local\nvim-data\site\pack\packer\start\telescope-fzf-native.nvim进入此路径的powershell或者cmd命令行,执行......
  • 驱动Driver-platform平台驱动
    驱动的分隔与分离platform平台驱动platform总线platform驱动platform设备......
  • unity--控制小球运动与销毁
    和上一章一样,先建立一个模型在test里继续写代码驱动。在上一章已经描述过如何让小球前后左右移动了。这次我换了一个更完美点的模型,和上章大差不差。再往里放入一个cube,将其rename成Enemy。在他跟处找到AddTag添加一个Enmey,并选择这个tag。player有Rigidbody,给物体一个作......
  • LLM大语言模型(七):部署ChatGLM3-6B并提供HTTP server能力
    目录HighLight部署ChatGLM3-6B并开启HTTPserver能力下载embedding模型bge-large-zh-v1.5HTTP接口问答示例LLM讲了个尴尬的笑话~HighLight将LLM服务化(如提供HTTPserver能力),才能在其上构建自己的应用。部署ChatGLM3-6B并开启HTTPserver能力下载embedding模型bge-l......
  • 华为OD机试 C++ -文件缓存系统
    文件缓存系统前言:本专栏将持续更新互联网大厂机试真题,并进行详细的分析与解答,包含完整的代码实现,希望可以帮助到正在努力的你。关于大厂机试流程、面经、面试指导等,如有任何疑问,欢迎联系我,wechat:steven_moda;email:[email protected];备注:CSDN。题目描述请设计一个文件缓......
  • python来判断密码强弱-类
    '''设计者:ISDF版本:v1.0日期:2019/4/3''''''设计者:ISDF版本:v2.0日期:2024/4/3'''classPasswordTool:'''密码工具类'''def__init__(self,password):#类......
  • 【精选】Canvas 事件处理系统 - 多图长文
    文章目录Canvas事件处理系统为什么我们需要事件处理系统系统搭建抽象图形画布类像素问题使用示例判断事件发生的图形CanvasRenderingContext2D.isPointInPath()Geometry圆矩形线段多边形OffscreenCanvas更多事件类型对比参考Canvas事件处理系统是我自己的一......
  • AI预测福彩3D第10弹【2024年3月16日预测--第2套算法重新开始计算第2次测试】
            今天继续开始咱们第2套算法的验证,计划每套算法连续测试10期,达到50%的命中率即为较优的模型,可继续使用。老规矩,先上图表,再下结论~                最终,经过研判分析,2024年3月16日福彩3D的七码预测结果如下:百位:1354798十位:324......
  • PTA L2-014 列车调度
    火车站的列车调度铁轨的结构如下图所示。两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。如果要求它们必须按序号递减的顺......