在一些数据库的程序中,大量数据显示qtableView会出现卡顿现象,甚至程序崩溃。
处理方法:
首先,定义两个槽函数
//接受滚动条事件
void acceptHScrollValueChanged(int value);
void acceptVScrollValueChanged(int value);
这两个槽函数连接到tableView 的滚动条事件上
connect (ui->tableView->horizontalScrollBar(),SIGNAL(valueChanged(int)),this,SLOT(acceptHScrollValueChanged(int)));
connect (ui->tableView->verticalScrollBar(),SIGNAL(valueChanged(int)),this,SLOT(acceptVScrollValueChanged(int)));
然后是槽函数里面:根据滚动条的当前值来刷新要显示的数据。
void MainWindow::acceptVScrollValueChanged(int value)
{
for(int h = hValue; h < hValue + 15; h++)
{
for(int w = wValue; w <wValue + 15; w++)
{
deleteColumnItem(h, w);
}
}
hValue = value;
for(int h = hValue; h < hValue + 15; h++)
{
for(int w = wValue; w <wValue + 15; w++)
{
setColumnItem(h, w, QString("%0").arg (OriginalDate[h*strList.size () + w]));
}
}
}
运行结果:亲测60000*60000的数据非常流畅