Sto creando un'applicazione Qt/C++ che utilizza QML per alcune parti. Sotto Windows vorrei fare uso delle finestre traslucide usando ExtendFrameIntoClientArea come visto in questo frammento della mia classe di finestre.QT Finestra traslucida e desktop remoto
#ifdef Q_WS_WIN
if (QSysInfo::windowsVersion() == QSysInfo::WV_VISTA ||
QSysInfo::windowsVersion() == QSysInfo::WV_WINDOWS7)
{
EnableBlurBehindWidget(this, true);
ExtendFrameIntoClientArea(this);
}
#else
il codice sta lavorando bene con una sola eccezione. Se il sistema di finestre trasparenti viene disattivato, lo sfondo diventa nero e, poiché la mia interfaccia utente è trasparente, diventa scuro. La stessa cosa accade quando si accede a un computer remoto che esegue l'applicazione, anche se il sistema di finestre trasparenti viene reinizializzato immediatamente lo sfondo rimane nero fino a quando il codice sopra non viene eseguito nuovamente. Questo è dimostrato in questa immagine: Comparison of failed rendering (in background) and correct (in front).
Il problema è trovare un segnale per connettersi alla reinizializzazione della finestra trasparente, o ancora meglio per rilevare quando le finestre sono disegnate in modo trasparente e disegnare l'interfaccia utente di conseguenza. Sono anche benvenute eventuali soluzioni alternative.