Bonour,

J'ai un problème avec ce morceau de code:

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#ifndef _window_hh_
#define _window_hh_

#include <QApplication>
#include <QWidget>
#include <QDesktopWidget>
#include <QPoint>
#include <QPainter>
#include <QPaintEvent>
#include <QObject>
#include <QDebug>

#include <iostream>

#include "jeuDeLaVie.hh"

class window: public QWidget {
	Q_OBJECT

	protected:
	class CelluleUI {
		


	};



	private:
	jeuDeLaVie* _model;
	QWidget* _jdvWidget;

	public:
	window(jeuDeLaVie* model,QWidget *parent = 0):
	QWidget(parent)
	{
		_model=model;

		/* Construction de la fenêtre Qt <<indépendante>> */ 
		setWindowTitle(tr("#    Jeu de la vie    #"));
		setFixedSize(600, 300);

		/* Center la fenêtre */
		QDesktopWidget *widget = QApplication::desktop();
		int desktop_width = widget->width();
		int desktop_height = widget->height();
		int x = desktop_width / 2 - width() / 2;
		int y = desktop_height / 2 - height() / 2 - 25;
		move(QPoint(x, y));
		buildJdvWidget();

		setUpdatesEnabled(true);
		_model->connecterAchange(this,SLOT(draw()));

	}

	~window(){
		if(_jdvWidget) delete _jdvWidget;
	}

	private :
	/* Construction de la fenêtre Qt d'affichage du modele */ 
	void buildJdvWidget() {
		_jdvWidget=new QWidget(this);
		_jdvWidget->resize(600, 300);
		_jdvWidget->setPalette(QPalette(QColor(250, 250, 250)));
		_jdvWidget->setAutoFillBackground(true);
	}

	public:
	void paintEvent(QPaintEvent * /*qevent*/) {
		std::cout << "paintEvent() called" << std::endl;
		QPainter painter(_jdvWidget);
		painter.drawText(10, 10,tr("drawText works!")); // But it doesn't :(
	}

	protected slots: void draw() {
		std::cout << "slots() called" << std::endl;
		update();
	}


};
#endif
window représente en quelque sort ma vue.
Dés que mon modèle change la fonction draw() est appelé. (car slots: draw() est connecté avec le signal Achange() du modele grace a la fonction connecterAchange).
Cette dernière fonctionne correctement puisque à l'éxécution j'ai plein de "slot() called", en revanche je n'ai pas de "paintEvent() called".
Pourquoi update() n'appele pas paintEvent() dans ma fonction draw() ?

Je précise que je n'ai aucune erreur/warning à la compilation, ni à l'éxécution.

Merci d'avance pour vos réponses