Текстовый мусор в безрамочном прозрачном окне Qt

#qt #go

#qt #Вперед

Вопрос:

Я пытаюсь создать безрамочное прозрачное окно с помощью Qt и его go-bind(https://github.com/therecipe/qt).

Проблема, с которой я столкнулся, заключается в том, что фрагменты текста остаются в безрамочном прозрачном окне. Пожалуйста, посмотрите на Gif(https://i.imgur.com/47OC7ps.gif).

Характеристики проблемы, которые я подтвердил, следующие.

  • Проблемы возникают только в окнах с измененными размерами. (Но не на 100%)
  • Только текст, первоначально отображаемый в окне, останется в виде мусора.

Этой проблемы можно избежать путем явного вызова Hide() , Show() в самом QMainWindow, но возникают проблемы с производительностью.

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

Есть ли какие-нибудь идеи?


Моя среда следующая:

Комментарии:

1. Возможно, ваш виджет не видит, что этот регион нуждается в обновлении. Попробуйте вызвать update() (без параметров), чтобы принудительно перерисовать весь ваш виджет.

2. Даже после того, как update() мусор продолжит оставаться. Кроме того, я подтвердил, что эта проблема возникает только в macOS. В Windows проблема не возникает.

Ответ №1:

Я решил эту проблему.

Эта проблема вызвана тенью окна в macOS. Я смог обойти эту проблему, установив Qt::NoDropShadowWindowHint значение window.

Возможно, эта проблема является ошибкой macOS / Qt.