穿透模式
概述
穿透模式是一种让浮动窗口「对鼠标事件透明」的窗口特性,使鼠标点击可以穿透当前窗口到达下层应用,实现多任务并行操作。
三种窗口状态对比
状态 |
鼠标行为 |
适用场景 |
|---|---|---|
普通模式 |
窗口拦截所有鼠标事件 |
需要完整交互的主窗口 |
穿透模式 |
鼠标穿透窗口到达下层 |
监控类、装饰类浮动窗口 |
锁定模式 |
保留局部交互区域 |
需要持续触达的控制面板 |
技术原理
穿透模式基于 Qt 的 WA_TransparentForMouseEvents 属性实现。当窗口启用该属性时:
Qt 将窗口从鼠标事件路由中完全剔除
鼠标事件「穿透」当前窗口,直接投递到下层的窗口或桌面
窗口仍然保持可见(不像隐藏),但对输入完全透明
此机制与操作系统的窗口合成器协同工作,确保在启用透明效果的同时保持性能。
端到端使用场景
场景一:游戏直播监控
主播在直播时需要同时监控聊天弹幕和游戏画面。使用穿透模式将监控面板悬浮在游戏窗口上方,可以在不切换焦点的情况下同时看到两面信息,鼠标仍然可以直接操作游戏。
场景二:设计稿对照
设计师在修改 UI 时需要参考原设计稿。将设计稿以穿透窗口悬浮在设计软件上方,边对照边修改,减少窗口切换频率。
场景三:实时数据大屏
金融交易员需要同时查看行情数据和交易界面。将行情窗口设为穿透,鼠标可以直接点击下层的交易按钮,实现多屏协同效果。
设计哲学
为什么需要穿透模式?
减少焦点切换 — 传统多窗口工作流需要频繁切换焦点,穿透模式让信息层叠成为可能
保持上下文 — 用户无需在多个应用间 mental switch,减少认知负担
空间利用率 — 在单一屏幕内实现「信息叠加」,尤其适合低分辨率或紧凑工作区
渐进式交互 — 锁定模式提供「选择性穿透」,让用户在穿透和交互之间取得平衡
穿透模式不是为了替代普通窗口,而是为特定工作流提供一种「不干扰」的交互方式——让信息「在眼前」,让操作「在背后」。