您好,欢迎来到保捱科技网。
搜索
您的当前位置:首页qt之QTableview显示及单元格内容获取

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

来源:保捱科技网
qt之QTableview显⽰及单元格内容获取

qt中的显⽰模式是model/view⽅式。

⼀、数据显⽰

我常⽤两种⽅式利⽤qtableview显⽰数据。

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

void MeasureDB::showDataTable(tableInfo &table,QString filter){#if 0

qDebug()<<\"cur filter string\"<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;iQString 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\"<if(!filter.isEmpty())

filter=QString(\"tm like \\'%1%\\' \").arg(filter); model->setTable(table.name); qDebug()<<\"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();//表格列宽⾃适应调整 tableView->verticalHeader()->setHidden(true);//左侧⾏号隐藏#endif }

  第⼆⽅式,定义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\"<record(index.row()).value(\"packages\").toString();

  

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baoaiwan.cn 版权所有 赣ICP备2024042794号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务