我试图在按下空格键时在Qgraphicsscene中的鼠标位置创建一个组合框。但组合框似乎没有放在正确的位置。请帮我。这是我的代码
class ConsoleScene(QtWidgets.QGraphicsScene):
def __init__(self, parent=None):
super(ConsoleScene, self).__init__(parent)
self.node_menu = None
def keyPressEvent(self, event):
if event.key() == QtCore.Qt.Key_Space and not self.node_menu:
self.node_menu = QtWidget.QCombobox()
view = self.views()[0]
pos = view.mapToGlobal(view.mapToGlobal(QtGui.QCursor.pos()))
self.addWidget(self.node_menu)
self.node_menu.move(pos.x(), pos.y())
self.node_menu.setFocus(True)
if event.key() == QtCore.Qt.Key_Escape and self.node_menu:
self.node_menu.deleteLater()
self.node_menu = None
super(ConsoleScene, self).keyPressEvent(event)
PS:-这不适用于Windows 10,Python 3.0,PyQt5 虽然可以在Linux,python 2.7,PyQt5上使用
答案 0 :(得分:0)
因此,在浏览了QCursor文档之后,我发现
pos = view.mapToGlobal(view.mapToGlobal(QtGui.QCursor.pos()))
应该是
pos = view.mapToGlobal(view.**mapFromGlobal**(QtGui.QCursor.pos()))
“ mapFromGlobal”将鼠标位置转换为小部件坐标。 “ setSceneRect”或不起作用也很重要