QTableView: как я правильно создаю QModelIndex?

Я пытаюсь ввести режим редактирования в определенную ячейку как это:

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

Моя модель создает индекс как это:

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

Вывод отладки похож на это:

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

Я абсолютно уверен, что индекс так или иначе недопустим как setCurrentIndex() кажется, не работает.

11
задан Marc Mutz - mmutz 24 June 2012 в 08:05
поделиться

1 ответ

Боже мой! земля поглотит меня!

номера строк начинаются с строки 0, мне нужно было сделать

int r=tm->rowCount(QModelIndex())-1;
QModelIndex id=tm->index(r,ec,QModelIndex());
14
ответ дан 3 December 2019 в 08:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: