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

本文介绍了如何使用Qt框架实现一个简单的文件编辑器,包括使用QFileDialog进行文件打开和保存,通过QFile进行文件的读写操作,以及QAction信号槽机制来响应用户的新建、打开和保存操作。重点函数有connect、getOpenFileName、getSaveFileName、读取文件到textEdit和textEdit保存到文件的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现文件编辑器代码

目录

一、代码要点

二、重点函数

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转QByteArray
        file.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_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    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转QByteArray
        file.write(ba);
        file.close();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值