일부 부품에서는 QML을 사용하여 Qt/C++ 응용 프로그램을 만들고 있습니다. 창 아래에서 내 창 클래스에서이 스 니펫에서 본 ExtendFrameIntoClientArea를 사용하여 반투명 창을 사용하고 싶습니다.QT 반투명 창 및 원격 데스크톱
#ifdef Q_WS_WIN
if (QSysInfo::windowsVersion() == QSysInfo::WV_VISTA ||
QSysInfo::windowsVersion() == QSysInfo::WV_WINDOWS7)
{
EnableBlurBehindWidget(this, true);
ExtendFrameIntoClientArea(this);
}
#else
코드는 한 가지 예외를 제외하고는 잘 작동합니다. 투명한 윈도우 시스템이 꺼져 있으면 배경이 검은 색이되고 내 UI의 일부분이 투명 해져 어두워집니다. 위의 코드가 다시 실행될 때까지 투명 창 시스템이 즉시 다시 초기화되는 경우에도 응용 프로그램을 실행하는 원격 컴퓨터에 로그인 할 때 동일한 문제가 발생합니다. Comparison of failed rendering (in background) and correct (in front).
문제는 투명 창을 다시 초기화하는 데 필요한 신호를 찾고, 그렇지 않은 경우 창을 투명하게 그릴 때 감지하여 그에 따라 UI를 그립니다. 다른 대안도 환영합니다.