我不明白mapToGlobal如何与多屏幕设置进行交互。它是返回相对于特定屏幕或整个桌面的全局位置吗?
如果我调用QCursor.setPos(widget.mapToGlobal(widget.geometry()。topLeft()),我总是会在窗口小部件的左上角找到指针,无论多屏情况如何?
答案 0 :(得分:3)
正如docToGlobal的文档所述: -
将窗口小部件坐标pos转换为全局屏幕坐标
由于您是从本地坐标映射的,因此您实际上可以使用: -
mapToGlobal(QPoint(0,0));
而不是必须指定小部件的几何体的左上角位置。
至于映射到全局坐标,从内存来看,我认为全局空间在屏幕上扩展,因此如果并排排列,分辨率为1024 x 768的两个屏幕将提供2048 x 768的屏幕空间。
文档还说明: -
对于具有多个屏幕的桌面,桌面大小是所有屏幕尺寸的并集
所以我希望mapToGlobal会返回一个相对于可用总屏幕空间的值,而不仅仅是窗口小部件所在的屏幕。如果没有,那么处理放置在两个屏幕之间的小部件将是非常尴尬的。
请注意,您还可以使用QDesktopWidget获取有关不同屏幕的信息,并检查窗口小部件所在的屏幕。如果您想在特定屏幕上放置小部件,它也很有用。
最后,在Qt 5中,还有QScreen类来查询屏幕属性。