2

我不明白 mapToGlobal 如何与多屏幕设置交互。它是返回相对于该特定屏幕还是整个桌面的全局位置?

如果我调用 QCursor.setPos(widget.mapToGlobal(widget.geometry().topLeft()) 将始终以小部件左上角的指针结束,无论多屏情况如何?

4

1 回答 1

3

正如 mapToGlobal 的文档所述:-

将小部件坐标 pos 转换为全局屏幕坐标

由于您是从本地坐标映射,您实际上可以使用:-

mapToGlobal(QPoint(0,0));

而不必指定小部件的几何图形的左上角位置。

至于从内存映射到全局坐标,我认为全局空间跨屏幕扩展,因此如果并排排列,两个分辨率为 1024 x 768 的屏幕将提供 2048 x 768 的屏幕空间。

文档还指出: -

对于多屏桌面,桌面大小是所有屏幕大小的并集

所以我希望 mapToGlobal 会返回一个关于可用总屏幕空间的值,而不仅仅是小部件所在的屏幕。如果没有,处理放置在两个屏幕之间的小部件将非常尴尬。

请注意,您还可以使用 QDesktopWidget 获取有关不同屏幕的信息并检查小部件驻留在哪个屏幕上。如果您想在特定屏幕上放置小部件,它也很有用。

最后,在 Qt 5 中,还有用于查询屏幕属性的 QScreen 类。

于 2013-10-23T10:28:26.443 回答