一开我以为QTableWidget是因为数据量过大的原因导致的.因为有1000多条数据,还有6列.就1000*6,后来我测试发现时间都耽误在了insertRow()上,我恍然大悟,6000多条数据对于CPU来说也是小菜一碟啊.我估计是插入行的时候需要建表导致变慢,我索性把数据库中数据条数读出来,然后采取一次性插入,速度上确实提高了不少.以前在ARM板卡上运行要1-2分钟,现在只要几秒钟就OK了.此时你是否想知道代码是如何的?别急容我在啰嗦几句,其实用MVC的方式更加好,因为这样可以避免内存浪费.QTableView和QSqlTableModel是完美的配合.不过此方法我没有用.在这里只是记录下,防止下次碰到了,需要使用.下面是我的解决问题的方法.
int row=tableWidgettemp->rowCount();
QString strtemp;
query.last();
int tablecount = query.at() + 1;
tableWidgettemp->setRowCount(tablecount);
query.first();
while(row < tablecount)
{
for(int i=0; i<=columnNum; i++)
{
strtemp = query.value(i).toString();
tableWidgettemp->setItem(row,i,new QTableWidgetItem(strtemp));
}
row++;
query.next();
}
tableWidgettemp->selectRow(row-1);