2010-06-06 15 views
2

我需要在2 QGraphicsViews中查看QGraphicsScene,條件是它們對於場景中的項目具有不同的比例因子。我發現最近的功能是drawItems(),但據我所知,它必須手動調用。如何自動重繪視圖? 我有這兩個代碼片段程序:如何在PyQt中使用QGraphicsViews中的自定義繪圖?

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

QGraphicsView和QGraphicsScene對象上的drawItems方法在Qt 4.6中已被棄用,必須使用IndirectPainting標誌來啓用,但我不推薦使用已棄用的功能。

這是另一個stack overflow question在類似的問題。其中一個答案顯示瞭如何使場景中的單個項目的繪畫方法知道哪個視圖正在繪製它們,並在不同視圖中繪製時使用不同的繪製代碼。

相關問題