Bonjour,

J'ai créer le code suivant, et j'aimerais savoir pouquoi view ne s'affiche pas. J'ai bien tous mes boutons au bon endroit mais pas view. Alors que si je ne crée pas de classe exemple et met tout dans le main directement, l'affichage est correct mais les connections signal, slot ne fonctionne pas. Peut-on m'expliquer pourquoi ?

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
#include "exemple.h"
#include <QApplication>
#include <QPushButton>
#include <QInputDialog>
#include <QMessageBox>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QPushButton>
#include <QGridLayout>
 
int main(int argc, char *argv[])
{
  QApplication app(argc, argv);
 
  Exemple exemple;
 
  exemple.showMaximized();
  return app.exec();
}
 
Exemple::Exemple()
  :QWidget()
{
  QPushButton *exit=new QPushButton("echap");
  QPushButton *rectangle=new QPushButton("rectangle");
  QPushButton *ellipse=new QPushButton("ellipse");
  QPushButton *segment=new QPushButton("segment");
  QPushButton *cercle=new QPushButton("cercle");
  QPushButton *para=new QPushButton("parallélogramme");
  //connect( exit, SIGNAL(clicked()), &a, SLOT(quit()) );
  QGraphicsScene scene;
  scene.addRect(QRectF(100, 200, 11, 16));
 
  QGraphicsView view(&scene);
 
  QGridLayout *gridLayout = new QGridLayout(this);
  gridLayout->addWidget(&view,0,0,6,4);
  gridLayout->addWidget(exit,6,5,1,1);
  gridLayout->addWidget(rectangle,1,5);
  gridLayout->addWidget(ellipse,3,5,1,1);
  gridLayout->addWidget(segment,0,5,1,1);
  gridLayout->addWidget(cercle,4,5,1,1);
  gridLayout->addWidget(para,2,5,1,1);
  this->setLayout(gridLayout);
  connect(para, SIGNAL(clicked()), this, SLOT(s_clicked()));
  //connect(this, SIGNAL(pseudoclick(QString&)), this, SLOT(s_clicked_texte(QString&)));
}
 
void Exemple::s_clicked()
{
  QString texte = QInputDialog::getText(this, "Demande", "Entrez du texte");
  emit s_clicked_texte(texte);
}
 
void Exemple::s_clicked_texte(QString& texte)
{
  QMessageBox message(QMessageBox::Information, "Ceci est un test d'information", "Le tesxte\n" + texte + "\na été entréé");
  message.exec();
}