Я реализую API перетаскивания Qt в Windows и ] X . Когда я беру объект в приложении, запущенном на X , и перетаскиваю его, он оставляет белый призрачный след в окне внизу, как если бы окно внизу медленно перерисовывалось там, где был перетащенный объект. ранее скрывая часть себя.
Я считаю, что это симптом той же проблемы, которую Qt только что решил с изменением размеров окон, вызывающим мерцание в дочерних виджетах в X windows - т.е. перетаскиваемый объект обрабатывается как отдельное собственное окно, и поэтому X обрабатывает отсечение от перетаскиваемого объекта к окну под ним. Поскольку X делает это иначе, чем Qt , мы получаем эффект двоения.
Были ли у кого-нибудь такие же проблемы? Одно из решений, которое приходит на ум, - использовать тот же метод, который подробно описан в статье блога, указанной выше, и прекратить обработку перетаскиваемого объекта как собственного окна, предположительно за счет того, что перетаскивание ограничивается только моим приложением (у меня нет проблема с этим). Кто-нибудь знает, как заставить операции перетаскивания быть только внутренними?
РЕДАКТИРОВАТЬ: Я использую QDrag :: setPixmap
, чтобы установить графическое представление перетаскиваемого объекта - это важно что я сохраняю это в пользу стандартного курсора перетаскивания, поскольку этот интерфейс используется на устройстве с сенсорным экраном и, следовательно, не будет иметь видимого курсора.