QTableView: comment puis-je créer correctement un QModelIndex?
-
21-09-2019 - |
Question
Je suis en train de passer en mode d'édition sur une cellule spécifique comme ceci:
void MainWindow::on_addButton_released() {
tm->addRow();
tableView->scrollToBottom();
int ec=tm->firstWritableColumn();
int r=tm->rowCount(QModelIndex());
QModelIndex id = tm->index(r, ec, QModelIndex());
tableView->setCurrentIndex(id);
tableView->edit(id);
qDebug() << "row:" << r << " col:" << ec << "index:" << id;
}
Mon modèle crée un index comme ceci:
QModelIndex TableModel::index(int row,int column,QModelIndex parent) const {
Q_UNUSED(parent);
return createIndex(row,column,0);
}
La sortie de débogage ressemble à ceci:
row: 9 col: 1 index: QModelIndex(9,1,0x0,TableModel(0xbf3f50) )
Je suis assez sûr que l'indice est en quelque sorte invalide setCurrentIndex()
ne semble pas fonctionner.
La solution
OMG! terrain me engloutir!
numéros de ligne commencent par la ligne 0, je devais faire
int r=tm->rowCount(QModelIndex())-1;
QModelIndex id=tm->index(r,ec,QModelIndex());
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow