non, pas vraiment avec la methode paint event.
(j'ai pas trouvé l'exemple embedded dialogs).
la documentation donne :
void QGraphicsScene::drawBackground ( QPainter * painter, const QRectF & rect ) [virtual protected]
Draws the background of the scene using painter, before any items and the foreground are drawn. Reimplement this function to provide a custom background for the scene.
All painting is done in scene coordinates. The rect parameter is the exposed rectangle.
If all you want is to define a color, texture, or gradient for the background, you can call setBackgroundBrush() instead.
See also drawForeground() and drawItems().
.
il faut que tu réimplémentes cette fonction, autrement dit que tu la redéfinisses et tu as bien saisi l'utilité qui est de te dessiner toi même ton background.
Dans le corps de cette fonction, tu devras donc appeler les methodes du QPainter pour tracer tes lignes tes rectangles et tout ça.
plus concretement, tu crees un QPainter *monPainter et un QRectF RectangleZoneDeDessin.
Puis tu fixes certaines propriétés (pinceau, crayon ...) de monPainter du genre :
1 2 3
| monPainter.setRenderHint(QPainter::Antialiasing, true);
monPainter.setPen(QPen(Qt::black, 12, Qt::DashDotLine, Qt::RoundCap));
monPainter.setBrush(QBrush(Qt::red, Qt::SolidPattern)); |
pour le rectangle tu lui donnes la largeur et la hauteur de ton QGraphicsView.
Puis tu appelles ta fonction QGraphicsScene::drawBackground en lui donnant le painter et le rectangle décrit ci dessus :
QGraphicsScene::drawBackground(monPainter, RectangleZoneDeDessin)
dans la réimplémentation de void QGraphicsScene::drawBackground ( QPainter * painter, const QRectF & rect ) tu peux faire la chose suivante :
1 2 3 4 5
| void QGraphicsScene::drawBackground ( QPainter * painter, const QRectF & rect )
{
painter.drawEllipse(50, 50, 700, 900);
painter.drawRect(10.0,20.0,80.0,60.0);
} |
voilà, mes exemples ne sont pas syntaxiquement corrects mais l'idée principale est :
Creer un QPainter et regler ses proprietes principales
Creer un QRectF de preference aux dimensions de ton QGraphicsView (je suppose que c'est dedans que tu vas dessiner)
reimplementer drawBackground(...) (note, elle est virtual protected, il faut donc que tu crees une classe qui herite de QGraphicsScene)
faire tes dessins
voilà, j'espere ne pas t'avoir dit trop d'âneries, parce que moi je suis encore un noob
Partager