【发布时间】:2014-07-15 18:38:36
【问题描述】:
我想像下图那样设置。
我想要QGraphicsView(例如,与窗口颜色相同)和QGraphicsScene(例如,白色)的不同背景颜色。另外,我希望如果某些项目被绘制出场景边界,则该部分不会被渲染(img 中的星号“任何项目”,腿被裁剪)。
我不知道如何设置它。我是 Qt 新手。
PS:我用的是python,如果你觉得舒服可以用c++举例。
回答杰里米·弗里斯纳
这是我应用您的提示的代码:
scene = QtGui.QGraphicsScene(0, 0, 256, 256)
scene.setBackgroundBrush(QtGui.QBrush(scene.palette().color(QtGui.QPalette.Window)))
scene.addRect(scene.sceneRect(), QtGui.QPen(QtCore.Qt.NoPen), QtGui.QBrush(QtCore.Qt.white))
scene.addLine(0, 0, 356, 356)
view = QtGui.QGraphicsView(scene)
self.setCentralWidget(view) # we are in a QMainWindow
如您所见,我使用场景边界和比场景边界大一点的线添加了一个白色 QRect。这是我的应用程序的截图结果(线也画出了场景):
如果应用程序大小小于场景边界(即View <= Scene),则不渲染场景之外的部分(不允许滚动条),但如果应用程序更大(即View > Scene ),然后绘制。如何解决?
【问题讨论】:
-
你找到答案了吗,或者下面的答案已经解决了?