Qt之QTableview显示及单元格内容获取

qt中的显示模式是model/view方式。

一、数据显示

我常用两种方式利用qtableview显示数据。

如下述代码所述,条件编译对应的不同代码代表了两种不同的显示方式。第一种方式利用QSqlQueryModel,利用不同的sql语句,显示不同的表格和数据。

void MeasureDB::showDataTable(tableInfo &table,QString filter)
{
#if 0
    qDebug()<<"cur filter string"<<filter;
    QSqlQueryModel *queryModel = new QSqlQueryModel(this);
    QSqlQuery query(currDatabase());
    QString strSql=QString("select * from %1 where tm like \'%2%\' order by id DESC")
            .arg(table.name).arg(filter);
    if(query.exec(strSql))
    {
        queryModel->setQuery(query);
        for(int i=0;i<table.fieldTitles.split(',').count();i++)
        {
            QString tmp=table.fieldTitles.split(',').at(i);
            queryModel->setHeaderData(i,Qt::Horizontal, QString(tmp.left(tmp.length()-1)));
        }
        while (queryModel->canFetchMore())
            queryModel->fetchMore();
        table.tableView->setModel(queryModel);
    }
    else
        qDebug()<<"query error,string sql"<<strSql;
#else
    if(!filter.isEmpty())
        filter=QString("tm like \'%1%\' ").arg(filter);
    model->setTable(table.name);
    qDebug()<<"filter "<<filter;
    model->setEditStrategy(QSqlTableModel::OnRowChange);
    if(!filter.isEmpty())
        model->setFilter(filter);
    model->setSort(0,Qt::DescendingOrder);
    model->select();
    table.view->setModel(model);
    table.view->resizeColumnsToContents();//表格列宽自适应调整<br>    tableView->verticalHeader()->setHidden(true);//左侧行号隐藏#endif <br>}

第二方式,定义QSqlTableModel指针,设置过滤条件、显示表格、排序方式也可实现表格的显示。我使用过程中两点注意事项:

1,前面使用QSqlTableModel时,先对其进行继承后再利用。作为小白一枚,当时觉得QSqlTableMode是抽象类,看来还需要认知下什么叫做抽象类。

2,以前显示表格的时候,每列专门设置列宽用来显示不同的列。实际只需要调用resizeColumnsToContents函数,就可以自适应调整显示的列宽。

model = new QSqlTableModel(m_tableView,currDatabase());

二、获取QTableView单元格内容

代码如下,代码中tbIP为QTableView对象,下述代码就可以获取当前QTableview对象单元格(当前行,packages列)的内容。另,如果修改单元格内容,则需要利用上述第二种表格显示方式。

QSqlTableModel *model=(QSqlTableModel *)ui->tbIP->model();
qDebug()<<"cur value"<<model->record(index.row()).value("packages").toString();

文章转自博客园(Seeyou123):qt之QTableview显示及单元格内容获取 - Seeyou123 - 博客园

本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓ 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值