下面显示的QgraphicsView和QMainWindow类的当前设计是我在另一个软件中的设计示例。在
我不得不在QGraphicsView中添加滚动条。 原始软件在QMainWindow中处理所有鼠标事件。在
问题:通过QMainWindow在QGraphicsView上绘图的方法是什么?在
import sys
from PyQt4 import QtGui
from PyQt4 import QtCore
class Window(QtGui.QGraphicsView):
def __init__(self, parent=None):
QtGui.QGraphicsView.__init__(self, parent)
self.scene = QtGui.QGraphicsScene(self)
self.scene.setBackgroundBrush(QtGui.QBrush(QtCore.Qt.darkGray, QtCore.Qt.SolidPattern))
self.setScene(self.scene)
#self.setDragMode(QtGui.QGraphicsView.ScrollHandDrag)
self.setTransformationAnchor(QtGui.QGraphicsView.AnchorUnderMouse)
#self.viewport().setCursor(QtCore.Qt.CrossCursor)
self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
self.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
print "sdsads"
def mousePressEvent(self, ev):
item = QtGui.QGraphicsTextItem("")
item.setPos(ev.x(), ev.y())
self.scene.addItem(item)
print "ev.x() ", ev.x()
class CityscapesLabelTool(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
centralwidget = Window()
self.setCentralWidget(centralwidget)
centralwidget.scene.addPixmap(QtGui.QPixmap("exit.png"))
app = QtGui.QApplication(sys.argv)
GUI = CityscapesLabelTool()
GUI.show()
sys.exit(app.exec_())
在}。在
QGraphicsView
中,向场景添加项目是正常的,例如,如果要绘制多边形,则必须使用QGraphicsPolygonItem
,如果要获得正确的点,则必须使用QGraphicsScene
,而不是{在下面的示例中,可以通过单击鼠标左键来指示多边形点,然后单击鼠标右键完成绘图。在
输出:
你有一个XY problem,在那里你在寻找一个主要问题的解决方案而不知道它是正确的,根据你的评论,你的主要问题是把
^{pr2}$QScrollBar
添加到QMainWindow
中,并且在该元素中你想要绘制图形,因此不需要使用QGraphicsView
,而是使用QScrollArea
。在相关问题 更多 >
编程相关推荐