qt实现基本文件操作

2023-12-17 18:35:05

先通过ui界面实现基本框架

接下来就要实现每个按键的功能了

我们先来实现新建的的功能,我们右键新建键,可以发现没有转到槽的功能,因此我们要自己写connect来建立关系。

private slots:
    void newActionSlot();

在.h文件中加上槽函数。

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

然后再.cpp的构造函数中加上connect函数,&QAction::triggered就是被单击的信号。

建立联系之后我们就可以实现newActionSlot()这个函数。

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

我们使用了clear清空原本的内容,然后重新给窗口名取别名。这样一来新建键的功能实现了。

接下来实现打开键。

void openActionSlot();

?老样子,在.h文件中加入此函数。

然后再.cpp中建立联系

 connect(ui->action_O,&QAction::triggered,this,&MainWindow::openActionSlot);

实现void openActionSlot()

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

?我们来一步一步解析。

QString filename= QFileDialog::getOpenFileName(this, "选择一个文件",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?QCoreApplication::applicationFilePath(),//获取当前路径
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "*.cpp");

这一行可以获取选择文件的绝对路径。

if(filename.isEmpty())
? ?{
? ? ? ?QMessageBox::warning(this,"警告","请选择一个文件");
? ?}

如果没有选择文件,回弹出窗口警告,加头文件QMessage。

?file.open(QIODevice::ReadOnly);以只读的方式打开文件

接下来我们实现另存为键

 void saveActionSlot();

connect(ui->action_S,&QAction::triggered,this,&MainWindow::saveActionSlot);
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());
        file.write(ui->textEdit->toPlainText().toUtf8().data());
        file.close();
    }
}

实现这个函数和上述步骤基本一致。

通过以上操作我们实现了基本功能,让我们一起来看看效果

点击打开键

没有选择文件

打开文件后,成功在textedit中显示

点击另存为键?

文章来源:https://blog.csdn.net/luosuss/article/details/135046510
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。