当前位置: 首页 > news >正文

Qt学习5-Qt Creator文件操作(哔站视频学习记录)

实现文件编辑器代码

目录

一、代码要点

二、重点函数

1、conncet

2、getOpenFileName 

3、getSaveFileName 

 4、读取文件到textEdit

 5、textEdit保存到文件

三、全部代码

mainwindow.h

mainwindow.cpp


一、代码要点

  • MainWindow的菜单栏实现;
  • connect函数连接信号与槽;如何实现选择一个文件的窗口QFileDialog,getOpenFileName和getSaveFileName;
  • 文件的读写,创建QFile对象、打开、读写、关闭。

二、重点函数

1、conncet

connect(ui->newAction,&QAction::triggered,this,&MainWindow::newActionSlot);

谁发出信号,发出什么信号,谁处理信号,处理什么信号

这里newActionSlot槽函数需要自己构建

void MainWindow::newActionSlot()
{ui->textEdit->clear();this->setWindowTitle("新建文本文档.txt");
}

2、getOpenFileName 

  • 打开一个文件
QString fileName = QFileDialog::getOpenFileName(this, "选择一个文件",QCoreApplication::applicationFilePath(),"*.cpp");//this是打开窗口的对话框的父类对象,第二个参数是打开窗口的title//第三个是打开窗口的默认路径,这里获取当前路径//第四个参数,只显示.cpp的文件

3、getSaveFileName 

  • 保存一个文件(参数和getOpenFileName 是一样的)
QString fileName=QFileDialog::getSaveFileName
(this,"选择一个文件",::applicationFilePath());
//没有第四个参数,会显示所有文件

 4、读取文件到textEdit

QFile file(fileName);//创建文件对象file.open(QIODevice::ReadOnly);QByteArray ba = file.readAll();ui->textEdit->setText(QString(ba));file.close();

 5、textEdit保存到文件

QFile file(fileName);file.open(QIODevice::WriteOnly);QByteArray ba;ba.append( ui->textEdit->toPlainText());//QString转QByteArrayfile.write(ba);file.close();

三、全部代码

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include<QFileDialog>
#include<QMessageBox>
//#include<QDebug>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();
private slots:void newActionSlot();void openActionSlot();void saveActionSlot();private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);this->setWindowTitle("编辑器");this->setWindowIcon(QIcon("D:\\Qt\\Qt-Learn-File\\QtOnline\\MyNoteBook\\icon.png"));connect(ui->newAction,&QAction::triggered,this,&MainWindow::newActionSlot);connect(ui->openAction,&QAction::triggered,this,&MainWindow::openActionSlot);connect(ui->saveAction,&QAction::triggered,this,&MainWindow::saveActionSlot);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::newActionSlot()
{ui->textEdit->clear();this->setWindowTitle("新建文本文档.txt");
}void MainWindow::openActionSlot()
{QString fileName = QFileDialog::getOpenFileName(this, "选择一个文件",QCoreApplication::applicationFilePath(),"*.cpp");//this是打开窗口的对话框的父类对象,第二个参数是打开窗口的title//第三个是打开窗口的默认路径,这里获取当前路径//第四个参数,只显示.cpp的文件if(fileName.isEmpty()){QMessageBox::warning(this,"警告"," 请选择一个文件!");}else{
//       qDebug()<<fileName;QFile file(fileName);//创建文件对象file.open(QIODevice::ReadOnly);QByteArray ba = file.readAll();ui->textEdit->setText(QString(ba));file.close();}
}void MainWindow::saveActionSlot()
{QString fileName=QFileDialog::getSaveFileName(this,"选择一个文件",QCoreApplication::applicationFilePath());//没有第四个参数,会显示所有文件if(fileName.isEmpty()){QMessageBox::warning(this,"警告","请选择一个文件");}else{QFile file(fileName);file.open(QIODevice::WriteOnly);QByteArray ba;ba.append( ui->textEdit->toPlainText());//QString转QByteArrayfile.write(ba);file.close();}
}

http://www.lryc.cn/news/32679.html

相关文章:

  • LeetCode15三数之和 容易理解版本
  • Spring Boot 3.0系列【11】核心特性篇之国际化
  • 每日学术速递3.7
  • 灯具照明行业MES系统,助力企业实现数字化转型
  • 超实用!JavaScript修改CSS变量,达到动态修改样式的目的
  • 解决Vue3 默认槽的非函数值 - Non-function value encountered for default slot 的警告
  • 【Git】P2 分支(创建分支,合并分支,分支冲突,分支分类)
  • 2023年全国最新交安安全员精选真题及答案14
  • Air101|Air103|Air105|Air780E|ESP32C3|ESP32S3|Air32F103开发板:概述及PinOut
  • 【代码随想录训练营】【Day35】第八章|贪心算法|860.柠檬水找零|406.根据身高重建队列|452. 用最少数量的箭引爆气球
  • 嵌入式C基础知识(23)
  • 一文掌握组织项目等级划分维度,标准和实例
  • 【C++】list的使用和基本迭代器框架的实现 vs和g++下string结构的说明
  • 基于深度学习的轴承寿命预测实践,开发CNN、融合LSTM/GRU/ATTENTION
  • redis进阶:mysql,redis双写一致性,数据库更新后再删除缓存就够了吗?
  • RTOS中互斥量的原理以及应用
  • 数据分析:基于随机森林(RFC)对酒店预订分析预测
  • 【python】序列(列表、元组)、字典、集合的初步认识
  • 周赛335(模拟、质因子分解、分组背包)
  • 【极致简洁】Python tkinter 实现下载工具,你想要的一键获取
  • npm i 安装报错
  • 原腾讯QQ空间负责人,T13专家,黄希彤被爆近期被裁员,裁员原因令人唏嘘。。...
  • 【C++】BloomFilter——布隆过滤器
  • 【Spring】资源操作管理:Resource、ResourceLoader、ResourceLoaderAware;
  • 【System Verilog基础】automatic自动存储--用堆栈区存储局部变量
  • 看板组件:Bryntum Task Board JS 5.3.0 Crack
  • 45 个 Git 经典操作场景,专治不会合代码
  • MyBatis之动态SQL
  • SpringBoot(Tedu)—DAY01——环境搭建
  • 代理模式-大话设计模式