Qt映射全局和多个屏幕。他们如何互动?

Qt映射全局和多个屏幕。他们如何互动?,qt,Qt,我不明白mapToGlobal如何与多屏幕设置交互。它是返回相对于特定屏幕的全局位置,还是返回整个桌面的全局位置 如果我调用QCursor.setPos(widget.mapToGlobal(widget.geometry().topLeft())我是否总是以小部件左上角的指针结束,而不考虑任何多屏幕情况?作为mapToGlobal的文档状态:- 将小部件坐标pos转换为全局屏幕坐标 由于是从局部坐标进行映射,因此实际上可以使用:- mapToGlobal(QPoint(0,0)); 而不必指

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


如果我调用QCursor.setPos(widget.mapToGlobal(widget.geometry().topLeft())我是否总是以小部件左上角的指针结束,而不考虑任何多屏幕情况?

作为mapToGlobal的文档状态:-

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

由于是从局部坐标进行映射,因此实际上可以使用:-

mapToGlobal(QPoint(0,0));
而不必指定小部件的几何体左上角位置

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

文件还规定:-

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

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

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


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

您是否查看了
QDesktopWidget::screenNumber(const QWidget*widget)
以获取小部件所在的屏幕编号?
QDesktopWidget::screenNumber(const QPoint&point)
也可能有用。谢谢。我实际上误用了mapToGlobal。我应该使用小部件的父级,而不是小部件。但是你的答案对于理解它的工作原理非常重要。