Bonjour à tous,
J'ai récupéré et adapté un code pour me permettre d'afficher une image dans une QMdiArea.
Et mon problème est que le QPainter que j'utilise est mal initialisé ou mal utilisé, et la je commence à m'arracher les cheveux.
Pour aider voici mon code
le .h
et le .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
18
19
20
21
22
23
24
25
26
27 #ifndef MDIAREA_H #define MDIAREA_H #include <QMdiArea> #include <QPainter> #include <QImage> #include <QResizeEvent> #include <QRect> class MdiArea : public QMdiArea { Q_OBJECT public: MdiArea(QWidget *parent = (QWidget*)Q_NULLPTR); ~MdiArea(); protected: void resizeEvent(QResizeEvent *resizeEvent); private: QImage *m_Img; QWidget *m_Parent; }; #endif // !MDIAREA_H
Le problème se situe au niveau de la ligne 25 : painter->drawImage( ... );
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
20
21
22
23
24
25
26
27
28
29
30 #include "MdiArea.h" MdiArea::MdiArea(QWidget *parent) : QMdiArea(parent), m_Parent(parent) { m_Img = new QImage(":/Background/central"); } MdiArea::~MdiArea() { delete m_Img; delete m_Parent; } void MdiArea::resizeEvent(QResizeEvent *resizeEvent) { QImage *newBackground = new QImage(m_Parent->size(), QImage::Format_RGB32); QPainter *painter = new QPainter(newBackground); painter->fillRect(m_Parent->rect(), QColor(212, 208, 200)); QImage *scaledImg = new QImage( m_Img->scaled(m_Img->size(), Qt::IgnoreAspectRatio) ); QRect *scaledRect = new QRect( scaledImg->rect() ); scaledRect->moveTo(newBackground->rect().topLeft()); painter->drawImage(new QRect(0, 0, m_Parent->size().width(), m_Parent->size().height()), scaledImg); setBackground(*newBackground); QMdiArea::resizeEvent(resizeEvent); }
J'ai la flèche qui est soulignée en rouge avec le tooltip
alors que la doc donne pour drawImage de QPainterdrawImage
aucune instance de fonction surchargée "QPainter::drawImage" ne correspond à la liste d'arguments
les types sont : (QRect *,QImage *)
le type d'objet est : QPainter
Il doit y avoir un truc sur les pointeurs que j'ai pas compris.void QPainter::drawImage(const QRect & rectangle, const QImage & image)
This is an overloaded function.
Draws the given image into the given rectangle.
Note: The image is scaled to fit the rectangle, if both the image and rectangle size disagree.
Mais la je cale.
Si quelqu'un peut m'explique, merci d'avance
Partager