Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: freejazz от Июль 26, 2014, 15:18



Название: Артефакты Drag&Drop в QListView
Отправлено: freejazz от Июль 26, 2014, 15:18
Может, кто сталкивался... Вообще-то саму Qt (на основе 4.2.???-не помню) смежники собирали под необходимые нужды, но вроде бы механизм D&D не выпиливали специально.
Есть QListView, модель и делегат для отрисовки и обработки мышки на элементах списка.
Элемент списка - виджет с разным набором кнопок, чекбоксов и надписей.
Должна быть возможность перетаскивания элементов внутри списка за выделенное место на элементе (иконка).

Если делать D&D используя внутренний механизм Qt (т.е. не создавать самому Drag-объект и не вызывать exec, а только события мышки отдавать списку когда надо), то все более-менее работает, за исключением следующих моментов:
1)перетаскивание на первых видимых элементах списка работает нормально - курсор + образ (битмапа) перетаскиваемого элемента появляются и перемещаются как надо, но если элемент в списке виден не полностью (т.е.высота списка не кратна высоте элемента), то в качестве битмапы при перетаскивании используется только эта видимая часть
2)после прокрутки списка до следующей порции элементов (изначально невидимых) перетаскивание работает, курсор есть, а вместо битмапы элемента - под курсором небольшой прямоугольник
3)при возврате к началу списка опять все работает, т.е. получается, что все работает только для первых видимых элементов списка.

Может, какие флаги забыл включить-выключить?