Qt表格大数据处理一些建议

利用表格展示数据是一种常见的数据展示手段。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);
}
发布了85 篇原创文章 · 获赞 34 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/chyuanrufeng/article/details/103419999