qcombobox помещен в неправильное положение мыши в qgraphicsscene - PullRequest
0 голосов
/ 29 сентября 2018

Я пытаюсь создать комбинированный список в Qgraphicsscene в позиции мыши, когда нажимается пробел.но combobox не помещается в правильное положение.Пожалуйста, помогите мне.Вот мой код

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 голосов
/ 01 октября 2018

Итак, пройдя документ QCursor, я обнаружил, что

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

должно быть

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

"mapFromGlobal" переводит положение мыши в координаты виджета. также важно, чтобы вы установили setSceneRect, иначе он не будет работать

...