stdware / qwindowkit

Cross-platform frameless window framework for Qt. Support Windows, macOS, Linux.
Apache License 2.0
538 stars 85 forks source link

很严重的渲染问题 #91

Closed SeaYJ closed 4 months ago

SeaYJ commented 4 months ago

问题已解决

wangwenx190 commented 4 months ago

截图里的界面是QWidget还是QtQuick?

wangwenx190 commented 4 months ago

跟DWM一点关系没有。而且我这边也有些比较复杂的程序用了QWK,没有遇到这个问题。

wangwenx190 commented 4 months ago

QWK隐藏了标题栏,这个可能不符合很多程序(包括显卡驱动)的预期,所以用某些品牌的显卡渲染时确实有可能发生异常的渲染。我必须确定你程序是基于QWidget(GDI)还是QtQuick(D3D/OpenGL/Vulkan)的。

SeaYJ commented 4 months ago

截图里的界面是QWidget还是QtQuick?

是QWidget程序。

wangwenx190 commented 4 months ago

完全是基于QWidget构建的吗,有没有内嵌什么其他控件,比如用OpenGL或者D3D接管绘制的东西

SeaYJ commented 4 months ago

完全是基于QWidget构建的吗,有没有内嵌什么其他控件,比如用OpenGL或者D3D接管绘制的东西

没有,完全基于原生 QWdiget 构建,那些模块未使用。

wangwenx190 commented 4 months ago

有没有重写paintEvent在里面QPainter之类的大量绘制东西?

wangwenx190 commented 4 months ago

能不能提供一个最小的可复现工程?

SeaYJ commented 4 months ago

有没有重写paintEvent在里面QPainter之类的大量绘制东西?

很抱歉,查到原因了,是因为不正确的使用了 Windows HWND 导致的,本该指定为程序窗口 HWND,但是被 this->winId() 指向了控件 HWND,才导致了这个渲染问题。

真的非常抱歉,打扰了,过一天我将删除此 ISSUSE。

再次致歉!

SineStriker commented 4 months ago

有没有重写paintEvent在里面QPainter之类的大量绘制东西?

很抱歉,查到原因了,是因为不正确的使用了 Windows HWND 导致的,本该指定为程序窗口 HWND,但是被 this->winId() 指向了控件 HWND,才导致了这个渲染问题。

真的非常抱歉,打扰了,过一天我将删除此 ISSUSE。

再次致歉!

倒是不用删除...