Медленная перерисовка внизу перетащил объект на X… Может ли Qt принудительно выполнять операции перетаскивания только для внутреннего использования?

Я реализую API перетаскивания Qt в Windows и ] X . Когда я беру объект в приложении, запущенном на X , и перетаскиваю его, он оставляет белый призрачный след в окне внизу, как если бы окно внизу медленно перерисовывалось там, где был перетащенный объект. ранее скрывая часть себя.

Я считаю, что это симптом той же проблемы, которую Qt только что решил с изменением размеров окон, вызывающим мерцание в дочерних виджетах в X windows - т.е. перетаскиваемый объект обрабатывается как отдельное собственное окно, и поэтому X обрабатывает отсечение от перетаскиваемого объекта к окну под ним. Поскольку X делает это иначе, чем Qt , мы получаем эффект двоения.

Были ли у кого-нибудь такие же проблемы? Одно из решений, которое приходит на ум, - использовать тот же метод, который подробно описан в статье блога, указанной выше, и прекратить обработку перетаскиваемого объекта как собственного окна, предположительно за счет того, что перетаскивание ограничивается только моим приложением (у меня нет проблема с этим). Кто-нибудь знает, как заставить операции перетаскивания быть только внутренними?


РЕДАКТИРОВАТЬ: Я использую QDrag :: setPixmap , чтобы установить графическое представление перетаскиваемого объекта - это важно что я сохраняю это в пользу стандартного курсора перетаскивания, поскольку этот интерфейс используется на устройстве с сенсорным экраном и, следовательно, не будет иметь видимого курсора.

17
задан sam-w 30 November 2011 в 09:50
поделиться