#qt #go
#qt #Вперед
Вопрос:
Я пытаюсь создать безрамочное прозрачное окно с помощью Qt и его go-bind(https://github.com/therecipe/qt).
Проблема, с которой я столкнулся, заключается в том, что фрагменты текста остаются в безрамочном прозрачном окне. Пожалуйста, посмотрите на Gif(https://i.imgur.com/47OC7ps.gif).
Характеристики проблемы, которые я подтвердил, следующие.
- Проблемы возникают только в окнах с измененными размерами. (Но не на 100%)
- Только текст, первоначально отображаемый в окне, останется в виде мусора.
Этой проблемы можно избежать путем явного вызова Hide()
, Show()
в самом QMainWindow, но возникают проблемы с производительностью.
Я ожидаю, что будет рассмотрено некоторое изменение размера приложения, поскольку проблема возникает только в окне с измененным размером.
Есть ли какие-нибудь идеи?
Моя среда следующая:
- Qt: 5.12.0
- Исходный код моего приложения: https://github.com/akiyosi/goqtframelesswindow фиксация:8d7aa6e
Комментарии:
1. Возможно, ваш виджет не видит, что этот регион нуждается в обновлении. Попробуйте вызвать
update()
(без параметров), чтобы принудительно перерисовать весь ваш виджет.2. Даже после того, как
update()
мусор продолжит оставаться. Кроме того, я подтвердил, что эта проблема возникает только в macOS. В Windows проблема не возникает.
Ответ №1:
Я решил эту проблему.
Эта проблема вызвана тенью окна в macOS. Я смог обойти эту проблему, установив Qt::NoDropShadowWindowHint
значение window.
Возможно, эта проблема является ошибкой macOS / Qt.