4、QT的使用——QT文件操作和事件实现文件保存

该文详细介绍了如何在Qt环境中进行文件操作,包括新建、打开、保存文件的实现,以及使用QFileDialog获取文件路径。同时,文章还涵盖了键盘和鼠标事件的处理,如Ctrl+S快捷键保存和鼠标按钮点击事件的响应。

目录

一、文件操作

1、ui界面

2、mainwindow.h

3、新建文件的功能

(1)构造函数中:(信号与槽的连接)

(2)新建文件槽函数

4、打开某个文件

(1)添加头文件

(2)获取文件并且将信息显示在文本框中

5、将一个文件的数据读出来,并且将数据另存为另一个文件

 二、事件

1、重写虚函数

2、键盘按下(ctr+s保存)

3、鼠标按下


一、文件操作

1、ui界面

(1)选择textEdit,然后选择垂直布局,保证文本框会随着框的大小变化而变化

(2)输入栏目名时,要写上”文件(&F)",就会显示”文件(F)“,才可通过快捷键打开菜单

(3)预览的快捷键:Alt+Shift+R

2、mainwindow.h

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    void keyPressEvent(QKeyEvent *k);
    void mousePressEvent(QMouseEvent *m);

private slots:
    void newActionSlot();
    void openActionSlot();
    void saveActionSlot();

3、新建文件的功能

(1)构造函数中:(信号与槽的连接)

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

(2)新建文件槽函数

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

4、打开某个文件

(1)添加头文件

#include <QFileDialog>

(2)获取文件并且将信息显示在文本框中

void MainWindow::openActionSlot()
{
    QString fileName = QFileDialog::getOpenFileName(this, "选择一个文件",
                 QCoreApplication::applicationFilePath(), "*.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();
    }
}

当前路径下: QCoreApplication::applicationFilePath()

若要指定路径:”/home“

5、将一个文件的数据读出来,并且将数据另存为另一个文件

void MainWindow::saveActionSlot()
{
    QString fileName = QFileDialog::getSaveFileName(this, "选择一个文件",
                QCoreApplication::applicationFilePath());
    if (fileName.isEmpty())
    {
        QMessageBox::warning(this, "警告", "请选择一个文件");
    }
    else
    {
        QFile file(fileName);
        file.open(QIODevice::WriteOnly);//打开文件
        //ui->textEdit->toPlainText();
        QByteArray ba;
        ba.append(ui->textEdit->toPlainText());//将数组读出来
        file.write(ba);
        file.close();
    }
}

 二、事件

1、重写虚函数

#include <QMessageBox>
#include <QDebug>
#include <QKeyEvent>
#include <QMouseEvent>


void keyPressEvent(QKeyEvent *k);
void mousePressEvent(QMouseEvent *m);

2、键盘按下(ctr+s保存)

void MainWindow::keyPressEvent(QKeyEvent *k)
{
    if (k->modifiers() == Qt::ControlModifier && k->key() == Qt::Key_S)
    {
        saveActionSlot();
    }
}

3、鼠标按下

void MainWindow::mousePressEvent(QMouseEvent *m)
{
    QPoint pt = m->pos();//获取鼠标的位置
    qDebug() << pt;//打印出鼠标的位置

    if (m->button() == Qt::LeftButton)
    {
        qDebug() << "左键被按下";
    }
    else if (m->button() == Qt::RightButton)
    {
        qDebug() << "右键被按下";
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值