我正在创建一个使用QML的Qt/C++应用程序。在Windows下,我想要利用扩展框架到客户区域的半透明窗口,就像在我的窗口类中看到的这个片段。
#ifdef Q_WS_WIN
if ( QSysInfo::windowsVersion() == QSysInfo::WV_VISTA ||
QSysInfo::windowsVersion() == QSysInfo::WV_WINDOWS7 )
{
EnableBlurBehindWidget(this, true);
ExtendFrameIntoClientArea(this);
}
#else
代码运行良好,但有一个例外。如果关闭透明窗口系统,则背景变为黑色,并且由于我的UI是透明的,因此它也会变暗。当登录到运行该应用程序的远程计算机时,即使立即重新初始化透明窗口系统,背景也会保持黑色,直到再次执行上述代码。这在此图片中得以证明。
问题在于找到一个信号来连接以重新初始化透明窗口,或者更好地检测窗口是否被透明地绘制并相应地绘制UI。欢迎任何替代方案。