我正在为某些部分使用 QML 创建一个 Qt/C++ 应用程序。在 windows 下,我想使用 ExtendFrameIntoClientArea 的半透明窗口,如我的窗口类的这个片段中所示。
#ifdef Q_WS_WIN
if ( QSysInfo::windowsVersion() == QSysInfo::WV_VISTA ||
QSysInfo::windowsVersion() == QSysInfo::WV_WINDOWS7 )
{
EnableBlurBehindWidget(this, true);
ExtendFrameIntoClientArea(this);
}
#else
该代码运行良好,但有一个例外。如果关闭透明窗口系统,背景会变黑,并且作为我的 UI 的一部分是透明的,它也会变暗。登录到运行应用程序的远程计算机时也会发生同样的事情,即使透明窗口系统立即重新初始化,背景也会保持黑色,直到再次执行上述代码。这在这张图片中得到了展示:失败的渲染(在背景中)和正确的(在前面)的比较。
问题是找到一个信号来连接重新初始化透明窗口,或者更好地检测窗口何时被透明绘制并相应地绘制 UI。也欢迎任何替代解决方案。