利用表格展示数据是一种常见的数据展示手段。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);
}