Название: Последовательность элементов, выдаваемая selectedIndexes() Отправлено: xintrea от Марта 25, 2009, 19:53 Здравствуйте!
Что-то я понять не могу одной вещи. Есть QListView, на экране он показывает последовательность записей Запись 1 Запись 2 Запись 3 Запись 4 Если выделить мышкой все записи, получить selectedIndexes(), и распечатать последовательно что там в QModelIndexList находится, то получится совсем другая последовательность Запись 4 Запись 1 Запись 2 Запись 3 Код такой Код
Причём последовательность записей в selectedIndexes() как-то странно зависит от того, как выделять строки в QListView. Можно сверху вниз с зажатым Shift, можно снизу вверх с зажатым Shift, можно с Shift зажатым выбрать все записи, а потом зажатым Ctrl на любой строчке отменить а потом применить вывод - результат будет такой как написано выше. А вот если выбирать изначально с зажатым Ctrl, в результате последовательность получим в порядке выбора элементов. И такая ситуация очень нехорошая. Дело в том, что если в интерфейсе есть копирование из одного QListView в другой, то при копировании нарушается последовательность записей. А нужно, чтобы последовательность записей сохранялась, т.е. если выбраны записи 1, 3, 4, то в конечный QListView они должны вставиться именно в последовательности 1, 3, 4, и не зависеть от того, как пользователь их выбирал. Вопрос. Как получить список выбраных в QListView записей, в котором записи бы располагались (были отсортированы) в соответствии с тем как они видны на экране? Название: Re: Последовательность элементов, выдаваемая selectedIndexes() Отправлено: Kolobok от Марта 25, 2009, 20:38 Я сам сортировал.
Название: Re: Последовательность элементов, выдаваемая selectedIndexes() Отправлено: xintrea от Марта 25, 2009, 21:15 Я сам сортировал. Каким образом? Добавляли скрытые данные, содержащие индекс, а потом по нему сортировали? И заодно при любом изменении списка (вставка, удаление, перенос записи вверх-вниз) делали пересчет индексов? Название: Re: Последовательность элементов, выдаваемая selectedIndexes() Отправлено: Rcus от Марта 26, 2009, 00:51 Цитировать QModelIndexList QItemSelectionModel::selectedIndexes () const /*выделение мое*/Returns a list of all selected model item indexes. The list contains no duplicates, and is not sorted. Поскольку QModelIndex реализует оператор < /** \ref qabstractitemmodel.h:77*/, то можно использовать qSort на QModelIndexList. Название: Re: Последовательность элементов, выдаваемая selectedIndexes() Отправлено: xintrea от Марта 26, 2009, 01:46 Поскольку QModelIndex реализует оператор <, то можно использовать qSort на QModelIndexList. Угу, попробую так. |