Qt如何保存tableWidget数据?


前言

在使用Qt Creator写demo的时候,每当程序重新运行,之前调试的信息就会遇到清空的情况。
下面介绍一个方法,可以在Qt文件关闭之后数据依然可以保存。


一、目标

实现Qt文件的数据保存,具体方法是

  1. 把数据 保存到本地文件.txt
  2. 运行后 读取上一次保存数据
  3. 该程序只用到.cpp文件

二、使用步骤

1.保存到本地文件.txt

.cpp代码如下:

#include <QFile>
#include <QDebug>
#include <QPushButton>
#include <QTableWidget>
//保存到本地文件
void Widget::on_saveBtn_clicked()
{
    //文件对象
    QFile file("D:\\demo02.txt");
    //只写方式打开
    if(!file.open(QFile::WriteOnly | QFile::Text))//只写的方式打开
    {
        return;
    }
    
    //文件流对象,读取文本文件
    QTextStream out(&file);
    
    //遍历对象
    int romCount = ui->tableWidget->rowCount();//获取总行数
    for(int i=0;i<romCount;i++)//行
    {
        QString rowstring;
        for(int j=0;j<5;j++)//列
        {
            //遍历表格中的字符串
            rowstring +=ui->tableWidget->item(i,j)->text();
            rowstring +="\t";   
        }
        rowstring += "\n";//下一行空格
        out<<rowstring;   //把每行数据传到文件对象
    }
    file.close();
}

2.读取上一次保存数据

这段代码要放到主窗口的构造函数内,因为程序运行之后就需要立即读取数据:

	QFile f("D:\\demo02.txt");

    if(!f.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        qDebug() << ("打开文件失败");
        return;
    }

    QTextStream t_in(&f);   //QTextStream读写文本文件的接口
    int t_cloumCount = 5;//列
    int t_lineCount = 0; //行
    QVector<QStringList> t_data; //文件内容
    while(!t_in.atEnd())
    {
        QString t_line = t_in.readLine();
        QStringList t_list = t_line.split('\t');
        t_data.append(t_list);
        t_lineCount++;
    }

    //设置表格行数
    ui->tableWidget->setRowCount(t_lineCount);
    //设置表格列数
    ui->tableWidget->setColumnCount(t_cloumCount);

    //表格内容
    for(int i = 0; i<t_data.size(); i++)
    {
        for(int j = 0; j < t_data[i].count(); j++)
        {
            ui->tableWidget->setItem(i,j,new QTableWidgetItem(t_data[i][j]));
        }
    }


总结

程序运行下来是没问题的。

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值