我在一个线程回调的函数中执行UI中的setData()函数
//在线程中调用UI上的setData 方法,模拟更新数据
void mythread::run()
{
while (1)
{
QMetaObject::invokeMethod(parent(), "setData ");
sleep(1);
}
}
//更新数据后显示
void mv::setData()
{
//更新数据
QMap<QString, double>::iterator it = data.begin();
for (; it != data.end(); ++it)
{
it.value() += 0.01;
}
//取当前选择的行
QItemSelectionModel* i = ui.tableView->selectionModel();
QModelIndex index = i->currentIndex();
//更新数据到model
model->setMap(data);
//设置选择的行
ui.tableView->selectRow(index.row());
}
使用上面模拟代码可以更新数据,但我在实际情况下data的数据比较多,我不想每次都重新更新.我想直接在原始数据上做修改。
我试过第一次将model->setMap(data);传入为data的指针,以后直接修改data,不再执行model->setMap(data); 但界面显示不即时,要点一行显示一行。效果很差。
请问一下大家有什么更好的方法吗?