2012-06-25 3 views
0

Мне нужен «немой» QWidget, который ничего не делает, предоставляет только HWND и может быть добавлен в качестве ребенка другому QWidget s. В частности, он не должен пытаться управлять курсором мыши (это моя проблема с просто созданием QWidget). (мотивация: у меня есть на месте активированного элемента управления ActiveX, который пытается изменить курсор мыши иногда, но QWidget изменяет его обратно по умолчанию, так что мерцает)Как я могу создать очень немой QWidget?

ответ

1

код, который делает курсор меняется не входит в QWidget, поэтому никакие изменения QWidget не устранили проблему. Это QApplication, который делает это, изнутри внутреннего QApplication::dispatchEnterLeave(...). В конце концов, это qt_win_set_cursor, который выполняет эту работу.

Я не совсем понимаю, как можно было бы изменить это поведение без изменения источников Qt.

Я бы предложил, чтобы отчетность была как ошибка Qt. Qt должен проверять, был ли изменен коренной курсор при выходе из чужих виджетов, и если это необходимо, нужно будет его сохранить. У вас будет больше шансов, что ошибка будет исправлена ​​быстро, если вы предоставите исправление, чтобы исправить проблему.

Обход проблемы: Чтобы предотвратить мерцание, установите переопределение курсора всего приложения, используя QApplication::setCursorOverride(). Это исправляет мерцание, но не фиксирует, что элемент управления не может изменить курсор.

+0

А, это довольно уныло. Я попытаюсь подключить SetCursor и посмотреть, могу ли я поймать изменение курсора. Спасибо за информацию, когда у меня есть время, я могу задуматься о создании патча для Qt. –

Смежные вопросы