Я пытаюсь написать программу, которая будет взаимодействовать с QGraphicsView.Я хочу собирать события мыши и клавиатуры, когда это происходит в QGraphicsView.Например, если пользователь нажимает на виджет QGraphicsView, я получу положение мыши, что-то вроде этого.Я могу довольно легко написать это жестко, но я хочу использовать QtDesigner, потому что пользовательский интерфейс будет часто меняться.
Это код, который у меня есть для gui.py.Простой виджет с QGraphicsView в нем.
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
_fromUtf8 = lambda s: s
class Ui_graphicsViewWidget(object):
def setupUi(self, graphicsViewWidget):
graphicsViewWidget.setObjectName(_fromUtf8("graphicsViewWidget"))
graphicsViewWidget.resize(400, 300)
graphicsViewWidget.setMouseTracking(True)
self.graphicsView = QtGui.QGraphicsView(graphicsViewWidget)
self.graphicsView.setGeometry(QtCore.QRect(70, 40, 256, 192))
self.graphicsView.setObjectName(_fromUtf8("graphicsView"))
self.retranslateUi(graphicsViewWidget)
QtCore.QMetaObject.connectSlotsByName(graphicsViewWidget)
def retranslateUi(self, graphicsViewWidget):
graphicsViewWidget.setWindowTitle(QtGui.QApplication.translate("graphicsViewWidget", "Form", None, QtGui.QApplication.UnicodeUTF8))
Код программы:
#!/usr/bin/python -d
import sys
from PyQt4 import QtCore, QtGui
from gui import Ui_graphicsViewWidget
class MyForm(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_graphicsViewWidget()
self.ui.setupUi(self)
QtCore.QObject.connect(self.ui.graphicsView, QtCore.SIGNAL("moved"), self.test)
def mouseMoveEvent(self, event):
print "Mouse Pointer is currently hovering at: ", event.pos()
self.emit(QtCore.SIGNAL("moved"), event)
def test(self, event):
print('in test')
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
myapp = MyForm()
myapp.show()
sys.exit(app.exec_())
Когда я запускаю этот код, он дает мне противоположность того, что я хочу.Я определяю положение мыши везде, кроме как внутри QGraphicsView.
Я уверен, что это проблема с моим QObject.connect.Но каждый раз, когда я возвращаюсь и читаю о сигналах и слотах, это имеет смысл, но я не могу этого понять.
Пожалуйста, помогите, я бью себя по голове последние несколько дней.Мне жаль, если об этом уже спрашивали, но я перебрал все темы по этой теме и нигде не могу найти.
Спасибо