Open mentalfl0w opened 1 month ago
为啥我的win10上没复现
我用的是Qt 6.6.3,MinGW编译的,测试程序用的是QtWidget的例子,我刚测试了一下QtQuick的也有这个问题,边缘的空隙在系统处于深色模式的时候更加明显。
我是qt6.6.1,我有空试试你的版本
我用的是Qt 6.6.3,MinGW编译的,测试程序用的是QtWidget的例子,我刚测试了一下QtQuick的也有这个问题,边缘的空隙在系统处于深色模式的时候更加明显。
我用了 Qt 6.6.3 MinGW 11.2 编译,依旧没有复现这个问题。请问你用的 Windows 10 的版本是多少,Windows SDK 的版本是多少。
我用的是Windows 10 on Arm64,版本号是21390.1,因为是mingw编译就没有安装Windows SDK,之前反馈的用户用的是Windows 10 22H2(19045.4842),Qt 6.5.1, msvc,也同样出现了这个问题。
我用的是Windows 10 on Arm64,版本号是21390.1,因为是mingw编译就没有安装Windows SDK,之前反馈的用户用的是Windows 10 22H2(19045.4842),Qt 6.5.1, msvc,也同样出现了这个问题。
我是 Windows 10 22H2(19045.4780)。。。暂时测不了
嗯嗯,或许可以看看别的用户是否也有相关问题。主要是我的设备不是Mac就是Windows 11,实在找不到Windows 10的设备了,有用户反馈我才做的测试,发现也出现了相应问题。
dwm blur 是有这个问题。这个效果是用私有API强行开出来的,如果你想要传统的模糊效果(非亚克力、非云母),可以自己用DwmEnableBlurBehindWindow搭配透明的窗口背景来实现。
我用的是Windows 10 on Arm64,版本号是21390.1,因为是mingw编译就没有安装Windows SDK,之前反馈的用户用的是Windows 10 22H2(19045.4842),Qt 6.5.1, msvc,也同样出现了这个问题。
你可以试试把src/widgets/widgetwindowagent_win.cpp
的setupWindows10BorderWorkaround
的实现全部注释掉,再看看问题会不会复现。这个函数是为了解决windows10开启无标题栏以后系统上边框消失的问题的,具体做法就是窗口重绘时在最顶上画一条黑线(反正微软就是这么做的,这个参考了 Windows Terminal 的代码)。有可能是开启blur以后与这个workaround产生冲突了。
我用的是Windows 10 on Arm64,版本号是21390.1,因为是mingw编译就没有安装Windows SDK,之前反馈的用户用的是Windows 10 22H2(19045.4842),Qt 6.5.1, msvc,也同样出现了这个问题。
你可以试试把
src/widgets/widgetwindowagent_win.cpp
的setupWindows10BorderWorkaround
的实现全部注释掉,再看看问题会不会复现。这个函数是为了解决windows10开启无标题栏以后系统上边框消失的问题的,具体做法就是窗口重绘时在最顶上画一条黑线(反正微软就是这么做的,这个参考了 Windows Terminal 的代码)。有可能是开启blur以后与这个workaround产生冲突了。
顶上多余的白线解决了,模糊化的问题仍然存在。
我用的是Windows 10 on Arm64,版本号是21390.1,因为是mingw编译就没有安装Windows SDK,之前反馈的用户用的是Windows 10 22H2(19045.4842),Qt 6.5.1, msvc,也同样出现了这个问题。
你可以试试把
src/widgets/widgetwindowagent_win.cpp
的setupWindows10BorderWorkaround
的实现全部注释掉,再看看问题会不会复现。这个函数是为了解决windows10开启无标题栏以后系统上边框消失的问题的,具体做法就是窗口重绘时在最顶上画一条黑线(反正微软就是这么做的,这个参考了 Windows Terminal 的代码)。有可能是开启blur以后与这个workaround产生冲突了。顶上多余的白线解决了,模糊化的问题仍然存在。
那可能就是blur水土不服了,本来就是逆向来的。
或者,你可以在win10上关掉编译选项QWINDOWKIT_ENABLE_WINDOWS_SYSTEM_BORDERS,这样整个系统边框都会被隐藏,可能就没这个问题了。
我用的是Windows 10 on Arm64,版本号是21390.1,因为是mingw编译就没有安装Windows SDK,之前反馈的用户用的是Windows 10 22H2(19045.4842),Qt 6.5.1, msvc,也同样出现了这个问题。
你可以试试把
src/widgets/widgetwindowagent_win.cpp
的setupWindows10BorderWorkaround
的实现全部注释掉,再看看问题会不会复现。这个函数是为了解决windows10开启无标题栏以后系统上边框消失的问题的,具体做法就是窗口重绘时在最顶上画一条黑线(反正微软就是这么做的,这个参考了 Windows Terminal 的代码)。有可能是开启blur以后与这个workaround产生冲突了。顶上多余的白线解决了,模糊化的问题仍然存在。
那可能就是blur水土不服了,本来就是逆向来的。
是的,其他几个效果(Acrylic,mica,mica-alt)在Windows 10下也不能开启,我索性就让Windows 10下都不开启模糊化效果了。Windows 10明年支持就到期了,现在再往里面投入应该收益不大,Windows 11下没问题就OK,不过Windows 11下的Acrylic和Mica之类的效果都有各种各样的问题,只有DWM是正常的,不过有一个可以用就行了。
dwm blur 是有这个问题。这个效果是用私有API强行开出来的,如果你想要传统的模糊效果(非亚克力、非云母),可以自己用DwmEnableBlurBehindWindow搭配透明的窗口背景来实现。
其余的可以自己加蒙版自定义。
或者,你可以在win10上关掉编译选项QWINDOWKIT_ENABLE_WINDOWS_SYSTEM_BORDERS,这样整个系统边框都会被隐藏,可能就没这个问题了。
关闭后这个边缘模糊的问题解决了,😂新的问题又出现了,Windows的原始边框出来了
很烦。那win10上还是不要用了吧。。。我看你的仓库里还有一个 win10 边框的 issue,那个方便的话也开个issue吧。这个 issue 留着不关。
很烦。那win10上还是不要用了吧。。。我看你的仓库里还有一个 win10 边框的 issue,那个方便的话也开个issue吧。这个 issue 留着不关。
OK,#134 已经开好了
复现流程:直接编译仓库,使用示例程序,在Windows 10下使用DWM Blur效果,窗口边缘会出现多余模糊(这部分本该是窗口阴影),顶部出现多余横线(约1px,系统日间模式为纯白,夜间模式为纯黑)。 图片: