V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
whi147
V2EX  ›  Qt

qt 透明窗口弹窗问题,有什么好方法解决

  •  
  •   whi147 · 2021-04-28 18:57:47 +08:00 via iPhone · 1305 次点击
    这是一个创建于 1284 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有一个主窗口称为 A,在 A 窗口内创建一个子窗口 b,在 b 窗口创建一个独立窗口 c (和 b 有父子关系,窗口类型为 qtool )。

    将 c 窗口显示一次后隐藏( show 、hide ),将 A 、b 窗口断开父子窗口关系,b 升级为 B 独立窗口,A 、B 窗口同级。

    bug:这时候显示 c 窗口,会抬高 A 窗口,隐藏 c 窗口会激活 A 窗口,c 窗口的父窗口为 B 。

    如果 B 窗口再创建一个子窗口 d,显示、隐藏 d 窗口都不会发生上面这个 bug 。

    如果 c 窗口在创建时没有显示过一次,分离 A 、B 窗口后也不会发生上面这个 bug

    4 条回复    2021-05-04 08:23:41 +08:00
    whi147
        1
    whi147  
    OP
       2021-04-28 18:58:28 +08:00 via iPhone
    手机打的。排版乱了
    whi147
        2
    whi147  
    OP
       2021-04-29 08:15:16 +08:00 via iPhone
    这个问题没人知道吗
    nyxsonsleep
        3
    nyxsonsleep  
       2021-05-03 19:16:26 +08:00
    似乎是删除父类关系的函数作用时机的问题,可能和 qt 的回收机制有关。
    解决起来也不复杂吧,既然 b 窗口再创建一个子窗口就不会发生 bug 。那么你在分离的时候创建一个不可见的 d 然后删除即可。
    whi147
        4
    whi147  
    OP
       2021-05-04 08:23:41 +08:00 via iPhone
    @nyxsonsleep 我找到了一种方式解决,在 ab 窗口分开后,重新设置 c 窗口属性就可以了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2729 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 12:29 · PVG 20:29 · LAX 05:29 · JFK 08:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.