Depuis une dizaine de jours, je bloque sur l'utilisation de QGraphicsScene::drawBackground
mon code fonctionnel avant tentative utilisation drawBackgound:
mycode.h
le code avec tentative ajout drawBackground
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 scene = new QGraphicsScene(); view = new QGraphicsView(scene); QImage image.load(filename); QPixmap pix=QPixmap::fromImage(image); QPainter *painter=new QPainter(&pix); QGraphicsPixmapItem *img_fond=scene->addPixmap(pix);
mycode.h :
mycode_scene.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 scene = new myscene(); view = new QGraphicsView(scene); QImage image.load(filename); QPixmap pix=QPixmap::fromImage(image); QPainter *painter=new QPainter(&pix); scene->drawBackground(painter,scene->rect()); view->setScene(scene); // utile ?
mycode_scene.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 #ifndef MYCODESCENE_H #define MYCODESCENE_H #include <QGraphicsScene> class myscene : public QGraphicsScene { Q_OBJECT public: myscene(); virtual void drawBackground ( QPainter * painter, const QRectF & rect ); ~myscene(); } ; #endif
Dans la console, j'ai bien l'affichage de "appel drawBackground" et même plusieurs fois, par contre mon img de fond ne s'affiche pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #include <QtGUI> #include "mycode_scene.h" myscene::myscene() { qDebug()<<"constructeur myscene"; } void myscene::drawBackground ( QPainter * painter, const QRectF & rect ) { qDebug()<<"appel drawbackground"; QGraphicsScene::drawBackground(painter,rect); } myscene::~myscene() { qDebug()<<"destructeur myscene"; }
Merci de bien vouloir m'aider, ça fait 10 jours que je suis là dessus. ( heureusement pas à plein temps mais bon )
Par ailleurs, le fait que la fonction drawBackground soit protected et non pas public signifie t"elle qu'il ne vaut mieux pas l'utiliser.
A la base je tente d'utiliser cette fonction pour récupérer après la position de la souris dans ma scene/view. A savoir que l'itemAt retourné me donne toujours l'image et non pas les autres éléments (QGraphicsRectItem)
Partager