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
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
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
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);
}
Le problème se situe au niveau de la ligne 25 : painter->drawImage( ... );
J'ai la flèche qui est soulignée en rouge avec le tooltip

drawImage

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
alors que la doc donne pour drawImage de QPainter
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.
Il doit y avoir un truc sur les pointeurs que j'ai pas compris.
Mais la je cale.

Si quelqu'un peut m'explique, merci d'avance