Название: Перемещение строчек beginMoveRows, endMoveRows Отправлено: neosapient от Июнь 25, 2010, 14:57 Здравствуйте.
Переписал пример %QTDIR\examples\itemviews\editabletreemodel, так чтобы перемещать строчки внути модели (исходник прикреплен к посту). - создал два пункта меню: "Move Row Up" и "Move Row Down" - перенаправил нажатие от этих пунктов меню на слоты: MainWindow::moveRowUp() и MainWindow::moveRowDown() - оттуда происходит вызов метода модели TreeModel::moveRows, с указанием номера строки, которую следует переместить, а так же её "родителя". - внутри метода модели происходит три операции * beginMoveRows() - блокируем кусок модели * TreeItem::moveChildren() - перемещаем элемент * endMoveRows() - освобождаем кусок мождели Собственно всё работает, но не для каждой строчки: - для первых двух строчек относительно корня выпадает ошибка/исключение. - все остальные строчки кроме первых двух прекрасно перемещаются между собой Причем ошибка для первых двух строчек возникает только при исполнении метода endMoveRows() ??? В чем может быть причина ? QT 4.6.2 Название: Re: Перемещение строчек beginMoveRows, endMoveRows Отправлено: AlekseyK от Январь 04, 2020, 02:33 Вот тут есть решение: https://stackoverflow.com/a/43683619/630169 - двигать вперёд нужно на 2 строчки - иначе крэш, в документации beginMoveRows объяснено почему: https://doc.qt.io/qt-5/qabstractitemmodel.html#beginMoveRows
|