无法在Qt5中设置QModelIndex

时间:2018-04-07 19:05:59

标签: qt model-view-controller

这是一个在执行SQL查询后更新QTableViewpartyView)内容的计时器例程。如果效果很好,但当我将程序从Qt4转换为Qt5时,它开始在最后一行给我分段错误:

void MainWindow::on_timer()
{
    QModelIndex idx=ui->partyView->currentIndex();
    partyModel.setQuery(partyModel.q_main+partyModel.q_where);
    ui->partyView->setCurrentIndex(idx);
}

QModelIndex中有哪些更改,以及如何避免此错误?

1 个答案:

答案 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.
     */
  }
}