Qt表格大数据处理一些建议
利用表格展示数据是一种常见的数据展示手段。Qt提供了丰富的类来支持表格数据。如果你的数据量不是很大就可以采用QTableWidget ,数据量大的话应采用QTableView。此文主要介绍一些加载大数据时,应该采用mode/view。QTableView,QStandardItemModel(可以其他的model)。建议:1.最好先设置setRowCountQTableWidget...
利用表格展示数据是一种常见的数据展示手段。Qt提供了丰富的类来支持表格数据。如果你的数据量不是很大就可以采用QTableWidget ,数据量大的话应采用QTableView。
此文主要介绍一些加载大数据时,应该采用mode/view。QTableView,QStandardItemModel(可以其他的model)。
建议:
1.最好先设置setRowCount
QTableWidget最好这是先设置行数,这样要比appendRow和insertRow速度要快。
2.可以分页显示
这种方式会增加代码的复杂度,看个人视情况而定。
3.搜索匹配
如果需要搜索匹配功能,建议采用QSortFilterProxyModel,使用也非常简单。
QStandardItemModel m_mode;
QSortFilterProxyModel m_sortmode;
m_sortmode.setFilterKeyColumn(1); //按照第1列匹配搜索
m_sortmode.setSourceModel(&m_mode);
ui.tableView->setModel(&m_sortmode);
调用QSortFilterProxyModel的函数
void setFilterRegExp ( const QRegExp & regExp )
void setFilterRegExp ( const QString & pattern )
速度也是可以的!
参考代码
QStandardItemModel m_mode;
QSortFilterProxyModel m_sortmode;
///////////////////////////////////////////
//搜索匹配
//m_sortmode.setFilterKeyColumn(1);
//m_sortmode.setSourceModel(&m_mode);
//ui.tableView->setModel(&m_sortmode);
/////////////////////////////////////////
ui.tableView->setModel(&m_mode); //设置模型
QStringList headerlist;
headerlist << "id" << "name";
m_mode.setColumnCount(headerlist.count());
m_mode.setHorizontalHeaderLabels(headerlist); //表头
int rowcount = 44168;
m_mode.setRowCount(44168); //设置行数
//数据添加
for (int i = 0; i < rowcount; ++i)
{
QStandardItem *item = new QStandardItem(QString("%1_0").arg(i));
m_mode.setItem(i,0,item);
QStandardItem *item = new QStandardItem(QString("%1_1").arg(i));
m_mode.setItem(i,1,item);
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)