У меня есть окно, содержащее QTreeView (databaseTreeView
) в подклассе QAbstractTableModel (через QSortFilterProxyModel). У меня есть кнопка [Добавить], которая вызывает ui->databaseTreeView->model()->insertRow(ui->databaseTreeView->model()->rowCount());
. У меня также есть кнопка [Изменить], которая использует ui->databaseTreeView->selectionModel()->currentIndex();
для передачи указателя в окно редактора.Как добавить элемент в модель в Qt4 и получить индекс для недавно добавленного элемента
Я бы хотел, чтобы кнопка [Добавить] автоматически открывала редактор с индексом вновь созданного элемента, но по мере сортировки модели я не могу использовать номер строки, в который я вставил строку. Плюс insertRows()
возвращает bool (индекс будет намного удобнее для моей ситуации, поэтому мне интересно, может ли кто-нибудь сказать мне, как получить индекс недавно добавленного элемента).
Я готов посвятить ему два или три часа, рефакторинг, если нет альтернативы, но я бы подумал, что это должно быть довольно просто. Я смотрю любопытно на сигнал QAbstractItemModel::rowsInserted
, но это просто возвращает строки, которые я дал insertRows()
, и редактирует последний элемент в списке, независимо от того, был ли он только что добавлен.
Полный источник можно найти по адресу https://github.com/megamasha/FlashKard, чтобы кто-нибудь мог поближе ознакомиться.
Спасибо за цитату, но это не вопрос перехода от одного индекса к другому - это вопрос не имеющий индекс в первую очередь. В любом случае, я нашел решение. Я выполнил свой собственный сигнал, отправленный из функции 'addRows()' и связал его с слотом, который открывает эту карту для редактирования. –