我正在使用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的小部件,包括项目视图,都使用视口(参见documentation)来显示可滚动的内容,并且该视口可以有margins
对于项目视图,这些边距将自动设置为显示标题,并在已映射到视口的区域中接收鼠标事件。如果要跟踪全局位置,则需要手动将其映射到视口:
相关问题 更多 >
编程相关推荐