У меня есть QTableView
с 3 строками и 2 столбцами. (Здесь я использую QStandardItemModel
). Я хочу, чтобы двигаться вверх/вниз по одиночной строке, когда нажата кнопка? Как я могу перемещать вверх/вниз строку в QTableView
?Как перемещаться по выделенной строке в Qt
Спасибо за ваш ответ vahancho. Я уже пробовал использовать QAbstractItemModel::moveRow
. Но это не сработает. Вот мой нерабочим код:
int currentRow = ui->tableView->currentIndex().row();
QModelIndex sourceParent = ui->tableView->model()->index(ui->tableView->selectionModel()->currentIndex().row(),0);
QModelIndex destinationParent = ui->tableView->model()->index(ui->tableView->selectionModel()->currentIndex().row()+1,0);
ui->tableView->model()->moveRow(sourceParent,currentRow, destinationParent,destinationParent.row());
Спасибо за ваш ответ vahancho. Я уже пробовал использовать QAbstractItemModel::moveRow
. Но это не сработает. Вот мой код. (Это не работает):
int currentRow = ui->tableView->currentIndex().row();
QModelIndex sourceParent = ui->tableView->model()->index(ui->tableView->selectionModel()->currentIndex().row(),0);
QModelIndex destinationParent = ui->tableView->model()->index(ui->tableView->selectionModel()->currentIndex().row()+1,0);
ui->tableView->model()->moveRow(sourceParent,currentRow, destinationParent,destinationParent.row());
Это не работает, потому что это виртуальная функция, которую вы должны реализовать самостоятельно. – neuronet
нейронет, спасибо за ваш ответ. Итак, вы говорите, что эта функция ('moveRow()') ничего не делает, если вы не реализуете ее самостоятельно? , Итак, какова идея этой функции? –