Estoy creando una aplicación Qt/C++ utilizando QML para algunas partes. En Windows, me gustaría hacer uso de ventanas translúcidas utilizando ExtendFrameIntoClientArea como se ve en este fragmento de mi clase de ventana.QT Ventana translúcida y escritorio remoto
#ifdef Q_WS_WIN
if (QSysInfo::windowsVersion() == QSysInfo::WV_VISTA ||
QSysInfo::windowsVersion() == QSysInfo::WV_WINDOWS7)
{
EnableBlurBehindWidget(this, true);
ExtendFrameIntoClientArea(this);
}
#else
El código está funcionando muy bien con una excepción. Si el sistema de ventana transparente está apagado, el fondo se vuelve negro, y como parte de mi IU es transparente, también se oscurece. Lo mismo sucede al iniciar sesión en una computadora remota que ejecuta la aplicación, incluso si el sistema de ventanas transparentes se reinicializa inmediatamente, el fondo permanece en negro hasta que se ejecute nuevamente el código anterior. Esto se demuestra en esta imagen: Comparison of failed rendering (in background) and correct (in front).
El problema es encontrar una señal para conectarse a la reinicialización de la ventana transparente, o mejor aún para detectar cuándo las ventanas se dibujan de forma transparente y dibujar la UI en consecuencia. Cualquier solución alternativa también es bienvenida.