Здравствуйте!
Что-то я понять не могу одной вещи. Есть QListView, на экране он показывает последовательность записей
Запись 1
Запись 2
Запись 3
Запись 4Если выделить мышкой все записи, получить selectedIndexes(), и распечатать последовательно что там в QModelIndexList находится, то получится совсем другая последовательность
Запись 4
Запись 1
Запись 2
Запись 3Код такой
C++ (Qt)
QListView *recordview;
...
QModelIndexList itemsforcopy=recordview->selectionModel()->selectedIndexes();
for(int i=0; i<itemsforcopy.size(); ++i)
qDebug() << itemsforcopy.at(i).data();
Причём последовательность записей в selectedIndexes() как-то странно зависит от того, как выделять строки в QListView. Можно сверху вниз с зажатым Shift, можно снизу вверх с зажатым Shift, можно с Shift зажатым выбрать все записи, а потом зажатым Ctrl на любой строчке отменить а потом применить вывод - результат будет такой как написано выше.
А вот если выбирать изначально с зажатым Ctrl, в результате последовательность получим в порядке выбора элементов.
И такая ситуация очень нехорошая.
Дело в том, что если в интерфейсе есть копирование из одного QListView в другой, то при копировании нарушается последовательность записей. А нужно, чтобы последовательность записей сохранялась, т.е. если выбраны записи 1, 3, 4, то в конечный QListView они должны вставиться именно в последовательности 1, 3, 4, и не зависеть от того, как пользователь их выбирал.
Вопрос. Как получить список выбраных в QListView записей, в котором записи бы располагались (были отсортированы) в соответствии с тем как они видны на экране?