Qt学习之路十一——文件的读写操作

在我们日常的使用中,我们经常需要对文件进行操作,这篇博客我们就利用qt来对文件进行读写操作。

这次我们需要利用ui界面,所以我们在创建项目的时候需要勾选创建界面。然后使用界面设计师进行布局,如下图所示。


一、读取文件

右击readfile转到槽,然后我们只需要在这个槽函数中实现功能就行了。这个槽函数实现的功能主要是获取读取的文件名,然后打开这个文件,将这个文件的内容读取到一个字节数组中,并且将文件里的内容显示到文本编辑框中。

我们使用getOpenFileName()函数来获取文件的名字。这个函数的参数意义在前一篇博客说过了,这里就不赘述了。

然后移只读的方式打开这个文件,并且创建一个字节数组的对象,我们使用readLine()这个函数来读取文件内容,如果没有到达文件末尾就一直读取内容。最后将内容显示在文本编辑框中。

void Widget::on_pushButtonRead_clicked()
{
    QString filename = QFileDialog::getOpenFileName(this, "打开文件", ".", "Txt(*.txt);;c files(*.c);; cpp files(*.cpp)");
    if(filename.isEmpty() == false)
    {
        QFile file(filename);
        bool isok = file.open(QIODevice::ReadOnly);//以只读的方式打开文件
        if(isok == true)
        {
            QByteArray array;
            while(file.atEnd() == false)
            {
                array += file.readLine();//将文件中的读取的内容保存在字节数组中。
            }
            ui->textEdit->setText(array);
        }
        file.close();//文件读取完毕后关闭文件。

    }
}

以上我们默认是从当前文件读取文件的,我们随便选择一个cpp文件来试一下,运行之后的结果就是这样。


二、保存文件

保存文件的步骤和读取文件的步骤差不多。

我们首先需要获取这个文件保存的路径,使用这个函数就可以实现了

QFileDialog::getSaveFileName(this, "保存文件", ".", "Txt(*.txt);;c files(*.c);;c++ files(*.cpp)");
这个函数的参数和getOpenFileName()参数的意思是一样的。

然后我们需要打开一个文件,将文本编辑框中的内容写入文件中,写入的时候我们用write()这个进行操作,这里我们需要注意一下这个函数的参数的类型。查看Qt的帮助文档,我们可以发现有一个重载的参数类型是char*类型的,有一个是QByteArray类型的。但是我们从文本框中得到的类型却是QString类型的。所以这里我们需要将类型进行一次转换,我们可以这样写:

file.write(str.toUtf8());

当保存完文件之后我们就可以将这个文件关闭了。

下面是具体的代码

void Widget::on_pushButtonWrite_clicked()
{
    QString filename = QFileDialog::getSaveFileName(this, "保存文件", ".", "Txt(*.txt);;c files(*.c);;c++ files(*.cpp)");
    if(filename.isEmpty() == false)
    {
        QFile file(filename);
        bool isok = file.open(QIODevice::WriteOnly);
        if(isok == true)
        {
            QString str = ui->textEdit->toPlainText();
            file.write(str.toUtf8());
        }
        file.close();
    }
}

编译完运行,我们在文本编辑框中写入一些内容,然后就将文件保存在当前目录中,可以看到目录中会多出刚刚保存的文件。


  • 6
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt作为一个跨平台的应用开发工具,提供了丰富的API和类库,可以方便地操作多个SQLite数据库和文件。下面是一些常见的Qt操作多个SQLite数据库和文件的方法: 1. 使用QSqlDatabase类:Qt提供了QSqlDatabase类来连接和管理SQLite数据库。可以使用QSqlDatabase::addDatabase()方法创建连接对象,然后使用QSqlDatabase::setDatabaseName()方法指定数据库名称和径。如果需要同时连接多个数据库,可以为每个数据库创建独立的QSqlDatabase对象,在需要时打开和关闭数据库连接。 2. 使用QSqlQuery类:QSqlQuery类可以执行SQL查询和更新语句,并获取查询结果。连接到不同的数据库时,只需使用不同的QSqlDatabase对象创建QSqlQuery对象即可。 3. 使用QFile类:Qt提供了QFile类来文件。可以使用QFile::open()方法打开文件,使用QFile::read()或QFile::write()方法文件内容。如果需要同时多个文件,可以为每个文件创建独立的QFile对象。 4. 使用QFileSystemModel类:QFileSystemModel类提供了访问文件系统的API。可以使用QFileSystemModel::setRootPath()方法指定要访问的文件径,然后使用QFileSystemModel::index()方法获取文件文件夹的索引,使用QFileSystemModel::data()方法获取文件属性和内容。 总之,Qt提供了丰富的工具和类库来操作多个SQLite数据库和文件,可以根据需要选择合适的方法来实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值