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);
}

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值