-
窗口状态变化过程中调整size
Qt::WindowState记录了窗口状态(Normal、最大化、全屏等),并在状态变化有事件通知。如果在通知事件中触发size变化,可能导致状态不对,因为QT内部状态逻辑会判断size,可能导致状态变化。 -
窗口从最大化恢复,获取窗口size不准确
获取窗口size仍是最大化时尺寸:qt 在系统窗口resize并没有马上触发内部resize,内部记录的size仍然是旧的,后面通过定时器或者某些场景触发的刷新,才更新尺寸,导致获取到的是旧的size -
跨屏幕move
QT内部会有运算,在win上跨屏幕移动时,可能DPI计算会有bug,导致窗口缩放显示异常。 -
控件退化成窗口
获取控件的winid,会导致退化成窗口,同时他的兄弟和父节点控件也会变窗口,可能导致异常表现。
当某个控件上添加一个子级,该子级为窗口时,如果在子级展示前就调用winid接口,也会导致子级立即变窗口,下次对该窗口展示时,其父级的控件也会退化为窗口。反之,在子级展示后再获取winid不会导致该问题。
WA_DontCreateNativeAncestors: 仅退化当前真窗口,不退化其他层级wieget为真窗口
-
Mask使用的问题
(1) 用qt的SetMask方法实现窗口圆角,效果比较差,win上有锯齿;
(2) 如果窗口支持resize,最好不要用mask,resize的一直需要重新设置mask尺寸,导致闪烁。 -
qt多屏坐标问题
多屏,当前屏幕的坐标是dpi的,但屏幕起点坐标不是dpi的。
例如:2560分辨率,1.25dpi,在第一个屏幕上是相对2048的坐标,在第二个屏幕是2560+x的坐标。
网友评论