Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python QT mapFromGlobal不是100%准确_Python_Qt_Pyqt5 - Fatal编程技术网

Python QT mapFromGlobal不是100%准确

Python QT mapFromGlobal不是100%准确,python,qt,pyqt5,Python,Qt,Pyqt5,我正在使用pyqt5,并尝试为表小部件内的组合框创建自定义上下文菜单。我用一个没有组合框的表格小部件成功地完成了这项工作,但我现在有点卡住了。我无法访问请求上下文菜单的组合框,因此无法将其映射到表。我现在尝试将全局光标位置映射到表,结果很接近,但不完全相同,因此我得到了错误的行/列组合。我在非组合框单元格上尝试了此操作,以便将实际位置与从光标映射的位置进行比较: cursorPos = QCursor.pos() print('\nCursor pos') print(cursorPos) ma

我正在使用pyqt5,并尝试为表小部件内的组合框创建自定义上下文菜单。我用一个没有组合框的表格小部件成功地完成了这项工作,但我现在有点卡住了。我无法访问请求上下文菜单的组合框,因此无法将其映射到表。我现在尝试将全局光标位置映射到表,结果很接近,但不完全相同,因此我得到了错误的行/列组合。我在非组合框单元格上尝试了此操作,以便将实际位置与从光标映射的位置进行比较:

cursorPos = QCursor.pos()
print('\nCursor pos')
print(cursorPos)
mappedFromGlobal = self.table.mapFromGlobal(QCursor.pos())
print('\nMapped from global')
print(mappedFromGlobal)
print('\nGiven pos')
print(pos)
这是我从上述代码中得到的输出:

Cursor pos
PyQt5.QtCore.QPoint(933, 442)
Mapped from global
PyQt5.QtCore.QPoint(542, 159)
Given pos
PyQt5.QtCore.QPoint(519, 133)

给定的位置是customContextMenuRequested信号提供给我的单元格的真实位置,正如您所看到的,映射的位置很近,但不精确。

所有基于QAbstractScrollArea的小部件,包括项目视图,都使用一个视口(请参见)来显示可滚动的内容,并且该视口可以具有

对于项目视图,这些边距将自动设置为显示标题,并在已映射到视口的区域中接收鼠标事件。如果要跟踪全局位置,则需要手动将其映射到视口:

mappedFromGlobal = self.table.viewport().mapFromGlobal(QCursor.pos())
请提供一份报告。