Qt QDesktopWidget 多屏时程序靠边隐藏问题

一 问题

程序主窗口有靠边隐藏功能,在用户多屏环境(左右双屏)出现了问题:当用户将窗口拖到两屏中间任意一屏的边缘放下,主窗口来回游动。

二 原因

Qt中基本上靠边隐藏的机制都是检测屏幕边缘,当符合条件时,设置移动路径开启动画自动移动隐藏或者显示。问题出现在双屏环境时检测屏幕边缘出现错误。当前用户环境多屏的场景越来越普遍,Qt中的QDesktopWidget类对多屏场景进行了比较全面的支持。

三 QDesktopWidget

可以通过QApplication::desktop()获取指针。

1 属性

1)primaryScreen

返回值为主屏幕的index

2)screenCount

屏幕数量

3)virtualDesktop

虚拟桌面,可以通过isVirtualDesktop进行判断。

2、常用方法

1)availableGeometry

有重载方法,根据参数返回所选index的屏幕或者包括窗口的屏幕或者包含某一点的屏幕的有效区域。

所谓有效区域,在mac上要减去dock和menu bar ;在windows上要减去task bar。

2)screenGrometry

有重载方法,根据参数返回所选index的屏幕或者包括窗口的屏幕或者包含某一点的几何区域(geometry)。

所谓几何区域,看一张Qt assistant上的图理解一下(搜索 window Geometry):

各类位置相关的方法总结如下(Qt assistant):

Including the window frame: x(), y(), frameGeometry(), pos(), and move().
Excluding the window frame: geometry(), width(), height(), rect(), and size().

3)screenNumber

有重载方法,所在的屏幕index.

4 ) width , height

由于QDesktopWidget类派生自Qwidget,所有有这两个方法,要注意的是多屏的时候,这两个函数和size方法指的所有屏幕的集合而不是单个屏幕。

3、信号

1)primaryScreenChanged

主屏幕发生改变

2)screenCountChanged

屏幕数量发生改变

四 注意点

1、靠边隐藏、居中显示等与屏幕相关的场景,均要考虑如今的多屏。

2、多屏问题场景比较复杂:扩展方向、屏幕大小不一致等等,注意兼顾。

五 备注

以上参考Qt assistant 5.9.2.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值