如何在PyQt中的QGraphicsView中使用自定义绘图?

时间:2010-06-06 03:59:57

标签: qt pyqt pyqt4

我需要查看2 QGraphicsScene中的QGraphicsViews,条件是它们对场景中的项目具有不同的比例因子。我找到的最近函数是drawItems(),但据我所知,它必须手动调用。如何自动重绘视图? 我在程序中有这两个代码片段:

class TGraphicsView(QGraphicsView):

    def __init__(self, parent = None):
        print("__init__")
        QGraphicsView.__init__(self, parent)

    def drawItems(self, Painter, ItemCount, Items, StyleOptions):
        print("drawItems")
        Brush = QBrush(Qt.red, Qt.SolidPattern)
        Painter.setBrush(Brush)
        Painter.drawEllipse(0, 0, 100, 100)

...

    Mw.gvNavigation = TGraphicsView(Mw) # Mw - main window
    Mw.gvNavigation.setGeometry(0, 0, Size1, Size1)
    Mw.gvNavigation.setScene(Mw.Scene)
    Mw.gvNavigation.setSceneRect(0, 0, Size2, Size2)
    Mw.gvNavigation.show()

__init__有效,Mw.gvNavigation会显示,其中有Mw.Scene items,但未调用drawItems()

1 个答案:

答案 0 :(得分:1)

QtraphicsView和QGraphicsScene对象上的drawItems方法已在Qt 4.6中弃用,必须使用IndirectPainting标志启用,但我不建议使用不推荐使用的功能。

这是类似问题的另一个stack overflow question。其中一个答案显示了如何使场景中各个项目的绘制方法知道哪个视图正在绘制它们,并在不同视图中绘制时使用不同的绘制代码。