framelesshelper/BUGS.md

1.5 KiB
Raw Blame History

已知问题

拖拽窗口边框时窗口内容不能及时跟随,能看到窗口的白底

  • 复现步骤:运行使用了样式表的QWidget程序(不使用样式表则无此问题);运行任意Qt Quick程序
  • 原因:暂时未知
  • 解决方案:对于QWidget程序,可以启用Qt::WA_NoSystemBackground属性,来禁用窗口默认的白色背景,但窗口背景会变成黑色,且无法改变,如果程序使用深色主题,则无大碍,如果使用浅色主题,体验应该不会太好。Qt Quick程序暂时无解。

拖拽窗口边框时能看到右上角的三个系统按钮/自绘内容消失(变白)

  • 复现步骤:在窗口构造前执行WinNativeEventFilter::install()函数
  • 原因:暂时未知
  • 解决方案:不要全局安装过滤器,应针对每一个窗口,单独调用addFramelessWindow函数

自绘内容例如D3D错位或不能及时刷新

  • 复现步骤在窗口中放置一个完全由Windows API绘制的控件
  • 原因:暂时未知
  • 解决方案:暂无

resize后发现尺寸不对

  • 复现步骤:在构造函数中调用resize函数;在安装过滤器之前调用resize函数
  • 原因:构造函数中获取的几何位置和大小是不准确的;调用resize这一类的函数时Qt默认会考虑边框和标题栏的宽度但安装过滤器后边框和标题栏没了所以尺寸就不对了
  • 解决方案:在控件或窗口显示出来以后再去获取或设置它们的几何位置及尺寸;先安装过滤器,再调整尺寸。