Безрамное окно Qt с полупрозрачным фоном без ошибки «Ошибка UpdateLayeredWindowIndirect» - PullRequest
0 голосов
/ 10 сентября 2018

С некоторого времени я получаю ошибку типа UpdateLayeredWindowIndirect failed for ptDst=... для моего безрамного окна с закругленными углами: я устанавливаю главное окно без рамки и рисую внутренний виджет с закругленными углами.

Здесь на Qt есть обсуждение , и здесь добавлен код для предупреждения здесь . Они говорят:

Так что, да, это все время молчаливо проваливалось. Это ограничение в Windows эта прозрачность (WS_EX_LAYERED) работает только для безрамного окна верхнего уровня.

Однако я установил прозрачность только в главном окне верхнего уровня:

if (m_isMainApplicationWindow && CGuiUtility::isTopLevelWindow(m_widget)) {
  m_widget->setAttribute(Qt::WA_NativeWindow);
  m_widget->setAttribute(Qt::WA_NoSystemBackground, frameless);
  m_widget->setAttribute(Qt::WA_TranslucentBackground, frameless); // causing QTBUG-52206
}

Так, как мне сделать это правильно и избежать ошибки?


Впечатление как это выглядит: Frameless window rounded corner

...