2010-06-06 2 views
2

QGraphicsScene을 (를) 2 QGraphicsViews (으)로보고 장면의 항목에 대해 서로 다른 축척 계수가 있어야합니다. 내가 찾은 가장 가까운 함수는 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입니다. 답변 중 하나는 한 장면의 개별 항목에 페인트 방법을 적용하여 어느보기가 해당 항목을 그리는지를 인식하고 다른보기로 그릴 때 다른 페인트 코드를 사용하는 방법을 보여줍니다.

관련 문제