美文网首页
QT使用中问题记录

QT使用中问题记录

作者: 行走的代码 | 来源:发表于2023-10-07 15:28 被阅读0次
    1. 窗口状态变化过程中调整size
      Qt::WindowState记录了窗口状态(Normal、最大化、全屏等),并在状态变化有事件通知。如果在通知事件中触发size变化,可能导致状态不对,因为QT内部状态逻辑会判断size,可能导致状态变化。

    2. 窗口从最大化恢复,获取窗口size不准确
      获取窗口size仍是最大化时尺寸:qt 在系统窗口resize并没有马上触发内部resize,内部记录的size仍然是旧的,后面通过定时器或者某些场景触发的刷新,才更新尺寸,导致获取到的是旧的size

    3. 跨屏幕move
      QT内部会有运算,在win上跨屏幕移动时,可能DPI计算会有bug,导致窗口缩放显示异常。

    4. 控件退化成窗口
      获取控件的winid,会导致退化成窗口,同时他的兄弟和父节点控件也会变窗口,可能导致异常表现。
      当某个控件上添加一个子级,该子级为窗口时,如果在子级展示前就调用winid接口,也会导致子级立即变窗口,下次对该窗口展示时,其父级的控件也会退化为窗口。反之,在子级展示后再获取winid不会导致该问题。

    WA_DontCreateNativeAncestors: 仅退化当前真窗口,不退化其他层级wieget为真窗口

    1. Mask使用的问题
      (1) 用qt的SetMask方法实现窗口圆角,效果比较差,win上有锯齿;
      (2) 如果窗口支持resize,最好不要用mask,resize的一直需要重新设置mask尺寸,导致闪烁。

    2. qt多屏坐标问题
      多屏,当前屏幕的坐标是dpi的,但屏幕起点坐标不是dpi的。
      例如:2560分辨率,1.25dpi,在第一个屏幕上是相对2048的坐标,在第二个屏幕是2560+x的坐标。

    相关文章

      网友评论

          本文标题:QT使用中问题记录

          本文链接:https://www.haomeiwen.com/subject/rqhvbdtx.html