《Qt————文件操作》

Qt的文件操作


本项目将实现一个类似notepad的功能

  1. 新建
  2. 打开
  3. 保存

这里将选择的是QMainWidow


功能编写

1.准备

1. 创建一个ui界面,加入Txt Editor,编辑窗口信息xx(& x)

在这里插入图片描述

2. 导入库

#include <QFileDialog>
#include<QMessageBox>
#include <QDebug>

3. 编写connect()函数、定义槽函数

在这里插入图片描述
在这里插入图片描述


2.新建功能

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

3.打开功能

void MainWindow::open_actionslot()
{
    QString filename = QFileDialog::getOpenFileName(this, "选择一个文件", QCoreApplication::applicationFilePath(), "All Files (*)");
    if (filename.isEmpty())
    {
        QMessageBox::warning(this, "警告", "请选择一个文件");
    } 
    else 
    {
        QFile file(filename);  // 用文件名初始化
        if (!file.open(QIODevice::ReadOnly)) {
            QMessageBox::warning(this, "错误", "无法打开文件");
            return;
    }
        // 这里可以读取文件内容,比如:
        QByteArray data = file.readAll();
        ui->textEdit->setText(QString(data));
        file.close();
    }
}

4.保存功能

void MainWindow::save_actionslot()
{
    QString filename=QFileDialog::getSaveFileName(this,"选择一个文件",QCoreApplication::applicationFilePath());
    if(filename.isEmpty())
        QMessageBox::warning(this,"错误","请选择一个文件");
    else
    {
        QFile file(filename);
        file.open(QIODevice::WriteOnly);
        QByteArray data=(ui->textEdit->toPlainText()).toUtf8();
        file.write(data);
        file.close();
     }
}

5.事件实现文件保存

在我们日常编辑文件时,通常会使用 Ctrl+S 快捷键进行保存操作。那么在 Qt 中,如何实现这样的快捷键功能呢?

在 Qt 中,鼠标点击、键盘按键等操作都被称为“事件”(Event),它们由 Qt 的事件系统统一处理。Qt 中所有控件类最终都继承自 QObject,并通过事件机制进行响应。

如果我们希望捕获键盘快捷键,例如 Ctrl+S,可以通过,重写控件的虚函数 keyPressEvent(),手动处理按键事件来实现

  1. 先在mainwidow.h下声明一个虚函数,导入#include <QKeyEvent>

  2. 再对虚函数进行重写

    void MainWindow::keyPressEvent(QKeyEvent *event)
    {
        //确保两个按键同时按下
        if (event->modifiers()==Qt::ControlModifier && event->key() == Qt::Key_S) {
            save_actionslot();  // 调用保存槽函数
        }
    }
    

这就可以实现ctrl+s保存文件的功能啦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值