QT 4.5 - comment puis-je obtenir un QPainter appareil dans un QGraphicsView

Je suis en train de faire un programme de peinture avec QT 4.5, donc je suis en utilisant le QGraphicsView pour la toile, et QGraphicsScene pour stocker les éléments dessinés. Pour certaines raisons, je ne pouvais pas obtenir un QPainter contexte dans ma propre dérivée de QGraphicsView

class DrawingCanvas : public QGraphicsView
{ 
  DrawingCanvas::DrawingCanvas(QWidget * parent);

 ...
};

DrawingCanvas::DrawingCanvas(QWidget * parent = 0) : QGraphicsView(parent) 
{
  ....
}

void DrawingCanvas::paintEvent(QPaintEvent& paintEventInfo)
{
  //Result in painter not active
  QPainter(this);
  ...
}

Cependant, si je change le DrawingCanvas d'être un enfant de QWidget, il fonctionne. Voyant que QGraphicsView est dérivé de QAbstractScrollArea, puis QFrame, puis QWidget, je voudrais attendre que le code du travail.

Donc je suppose que les questions sont:

1) Pourquoi est-ce que je ne peux pas utiliser paintEvent dans un QGraphicsView pour obtenir un actif QPainter?
2) Est-il possible que je puisse obtenir un?

Merci d'avance!

OriginalL'auteur Extrakun | 2009-07-13