Can';t在Qt5中设置QModelIndex
下面是一个计时器例程,它在执行SQL查询后更新Can';t在Qt5中设置QModelIndex,qt,model-view-controller,Qt,Model View Controller,下面是一个计时器例程,它在执行SQL查询后更新QTableView(partyView)的内容。If工作正常,但当我将程序从Qt4转换为Qt5时,它开始在最后一行给我分段错误: void MainWindow::on_timer() { QModelIndex idx=ui->partyView->currentIndex(); partyModel.setQuery(partyModel.q_main+partyModel.q_where); ui->
QTableView
(partyView
)的内容。If工作正常,但当我将程序从Qt4转换为Qt5时,它开始在最后一行给我分段错误:
void MainWindow::on_timer()
{
QModelIndex idx=ui->partyView->currentIndex();
partyModel.setQuery(partyModel.q_main+partyModel.q_where);
ui->partyView->setCurrentIndex(idx);
}
在QModelIndex
中更改了什么,以及如何避免此错误?关于代码
partyModel.setQuery(partyModel.q_main+partyModel.q_where);
这是否会更新附加了ui->partyView
的基础模型?如果是这样,它很可能会使ui->partyView->currentIndex()
返回的QModelIndex
无效
试着改用
我不能说我知道从
Qt4
到Qt5
的任何特定更改,但严格来说,QModelIndex
是一个临时对象,可以通过对基础模型的任何更改而失效。我想你是幸运的(或者是不幸运的,取决于你的观点),因为Qt4
@MichaelO。未定义的行为迟早会咬到你。
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.
*/
}
}