这是一个在执行SQL查询后更新QTableView
(partyView
)内容的计时器例程。如果效果很好,但当我将程序从Qt4转换为Qt5时,它开始在最后一行给我分段错误:
void MainWindow::on_timer()
{
QModelIndex idx=ui->partyView->currentIndex();
partyModel.setQuery(partyModel.q_main+partyModel.q_where);
ui->partyView->setCurrentIndex(idx);
}
QModelIndex
中有哪些更改,以及如何避免此错误?
答案 0 :(得分:3)
关于代码......
partyModel.setQuery(partyModel.q_main+partyModel.q_where);
是否更新了附加ui->partyView
的基础模型?如果是这样,则可能会使QModelIndex
返回的ui->partyView->currentIndex()
无效。
请尝试使用QPersistentModelIndex
。
void MainWindow::on_timer ()
{
QPersistentModelIndex idx = ui->partyView->currentIndex();
partyModel.setQuery(partyModel.q_main + partyModel.q_where);
if (idx.isValid()) {
ui->partyView->setCurrentIndex(idx);
} else {
/*
* idx is no longer a valid model index -- do something appropriate.
*/
}
}