Frage

Ich versuche, den Bearbeitungsmodus auf einer bestimmten Zelle wie folgt ein:

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;
}

Ihr Modell einen Index wie folgt erstellt:

QModelIndex TableModel::index(int row,int column,QModelIndex parent) const {
    Q_UNUSED(parent);
    return createIndex(row,column,0);
}

Die Debug-Ausgabe sieht wie folgt aus:

row: 9  col: 1 index: QModelIndex(9,1,0x0,TableModel(0xbf3f50) )  

Ich bin ziemlich sicher, dass der Index irgendwie ungültig ist, als setCurrentIndex() nicht zu funktionieren scheint.

War es hilfreich?

Lösung

OMG! Boden schlucken me up!

Zeilennummern beginnen mit der Zeile 0, musste ich tun

int r=tm->rowCount(QModelIndex())-1;
QModelIndex id=tm->index(r,ec,QModelIndex());
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top