qcombobox放在qgraphicsscene中的鼠标位置错误

时间:2018-09-29 14:41:52

标签: qgraphicsscene qcombobox

我试图在按下空格键时在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上使用

1 个答案:

答案 0 :(得分:0)

因此,在浏览了QCursor文档之后,我发现

pos = view.mapToGlobal(view.mapToGlobal(QtGui.QCursor.pos()))

应该是

pos = view.mapToGlobal(view.**mapFromGlobal**(QtGui.QCursor.pos()))

“ mapFromGlobal”将鼠标位置转换为小部件坐标。 “ setSceneRect”或不起作用也很重要