pyQt4 QGraphicsView нужна помощь по событию мыши - PullRequest
5 голосов
/ 24 июля 2011

Я выполнил немало поисков этой проблемы, что, вероятно, тривиально.Однако я новичок в pyQT и полностью застрял.Мы будем благодарны за любую помощь.

Я просто хочу разместить, переместить и нарисовать объекты в виджете QGraphicsView, используя QGraphicsScene.Следующий код для обработки событий нажатия мыши работает, но он срабатывает при щелчке мыши в любом месте формы, а не только в QGraphicViewer (также в результате этого объект впоследствии помещается не в то место).Вот выдержка из кода, который я сейчас использую

def mousePressEvent(self, ev): #QGraphicsSceneMouseEvent
    if ev.button()==Qt.LeftButton:
        item = QGraphicsTextItem("CLICK")
        item.setPos(ev.x(), ev.y())
        #item.setPos(ev.scenePos())
        self.scene.addItem(item)

Я знаю, что должен использовать QGraphicsSceneMouseEvent, и я вижу, как это реализовано в C ++;но я понятия не имею, как заставить это работать в Python.

Спасибо

1 Ответ

6 голосов
/ 24 июля 2011

Попробуйте расширить QtGui.QGraphicsScene и использовать его mousePressEvent и координаты scenePos (). Что-то вроде:

class QScene(QtGui.QGraphicsScene):
    def __init__(self, *args, **kwds):
        QtGui.QGraphicsScene.__init__(self, *args, **kwds)

    def mousePressEvent(self, ev):
        if ev.button() == QtCore.Qt.LeftButton:
            item = QtGui.QGraphicsTextItem("CLICK")
            item.setPos(ev.scenePos())
            self.addItem(item)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...