///////////the Headers//////////////////////
//FenPrinicipale.h
#ifndef FENPRINCIPALE_H
#define FENPRINCIPALE_H
#include <QtGui>
class FenPrincipale
: public QWidget{
Q_OBJECT
public:
FenPrincipale();
bool M[10][10];
private slots:
void FillIn();
void FenetreDessin();
private:
};
#endif // FENPRINCIPALE_H
//FenDessin.h
#ifndef FENDESSIN_H
#define FENDESSIN_H
#include <QtGui>
{
public:
private:
private slots:
};
#endif // FENDESSIN_H
//FenPrincipale.cpp
#include "qDebug.h"
#include "FenPrincipale.h"
#include "FenDessin.h"
FenPrincipale::FenPrincipale()
{
tabM->setRowCount(10);
tabM->setColumnCount(10);
vbox->addWidget(generer);
vbox->addWidget(dessiner);
vbox->addWidget(tabM);
this->setLayout(vbox);
for (int r = 0; r < 10; r++) {
for (int c = 0; c < 10; c++) {
tabM->setItem(r, c, it);
it->setData(Qt::EditRole, 0);
}
}
connect(generer, SIGNAL(clicked()), this, SLOT(FillIn()));
}
void FenPrincipale::FillIn()
{
for (int r = 0; r < 10; r++) {
for (int c = 0; c < 10; c++) {
Q_ASSERT(it);
qDebug() <<it;
int val = (it->data(Qt::EditRole)).toInt();
M[r][c] = (val == 1)? true: false;
qDebug() <<M[r][c];
}
}
connect(dessiner, SIGNAL(clicked()), this, SLOT(FenetreDessin()));
}
void FenPrincipale::FenetreDessin()
{
FenDessin *fenetreCC = new FenDessin( this);
fenetreCC->exec();
}
//FenDessin.cpp
#include "FenDessin.h"
{
paintEvent(c);
connect(fermer, SIGNAL(clicked()), this, SLOT(accept()));
}
{
int o,p;
for (o=0; o<10; o++)
{
for (p=0; p<10; p++)
{
M[o][p]=0;
}
}
int tour=0;
int x=10;
int y=10;
int Num_Sommet=0;
int T_Coordonnees [10][3];
for (Num_Sommet=0; Num_Sommet<10; Num_Sommet++)
{
(T_Coordonnees[Num_Sommet][0])=x;
(T_Coordonnees[Num_Sommet][1])=y;
(T_Coordonnees[Num_Sommet][2])=tour;
if (tour==0)
{
x+=35;
tour=1;
}
else
{
y+=55;
tour=0;
}
}
int w1=0;
int w2=0;
int cpt=10;
Num_Sommet=0;
for (Num_Sommet=0; Num_Sommet<10; Num_Sommet++)
{
if ( (T_Coordonnees[Num_Sommet][2])==1)
{ if(w1==0)
{
(T_Coordonnees[Num_Sommet][0])=((T_Coordonnees[Num_Sommet][0])+500) ;
w1=1;
}
else
{
if(w1==1)
{
(T_Coordonnees[Num_Sommet][0])=((T_Coordonnees[Num_Sommet][0])+250+cpt) ;
w1=0;
cpt=cpt+15;
}
}
if (Num_Sommet==9)
{
(T_Coordonnees[Num_Sommet][0])=((T_Coordonnees[Num_Sommet][0])+45) ;
}
}
else
{
if(w2==0)
{
(T_Coordonnees[Num_Sommet][0])=(T_Coordonnees[Num_Sommet][0])+200;
w2=1;
}
else
{
(T_Coordonnees[Num_Sommet][0])=(T_Coordonnees[Num_Sommet][0])+100+cpt;
w2=0;
cpt=cpt+15;
}
if (Num_Sommet==4)
{
(T_Coordonnees[Num_Sommet][0])=((T_Coordonnees[Num_Sommet][0])+45) ;
}
}
painter.drawEllipse((T_Coordonnees[Num_Sommet][0]), (T_Coordonnees[Num_Sommet][1]), 30.0, 30.0);
}
int i,j;
for (i=0; i<10; i++)
{
for (j=0; j<10; j++)
{
if (M[i][j]==1)
{
painter.drawLine((T_Coordonnees[i][0]+20),(T_Coordonnees[i][1]),(T_Coordonnees[j][0]+20),(T_Coordonnees[j][1]));
}
}
}
for (i=0; i<10; i++)
{
for (j=0; j<10; j++)
{
if ((M[i][j]==1) && (M[j][i]==1))
{
painter.drawLine((T_Coordonnees[i][0]+20),(T_Coordonnees[i][1]),(T_Coordonnees[j][0]+20),(T_Coordonnees[j][1]));
if( (T_Coordonnees[i][1]>45)||(T_Coordonnees[j][1]>45) )
{
painter.drawLine(((T_Coordonnees[i][0]+20)-10),(T_Coordonnees[i][1]),((T_Coordonnees[j][0]+20)-10),(T_Coordonnees[j][1]));
}
else
{
painter.drawLine((T_Coordonnees[i][0]+20),(T_Coordonnees[i][1]+30),(T_Coordonnees[j][0]+20),(T_Coordonnees[j][1]+30));
}
}
}
}
////////////////////////////////////////////////
Num_Sommet=0;
for (Num_Sommet=0; Num_Sommet<10; Num_Sommet++)
{
QPoint point
= QPoint( (((T_Coordonnees
[Num_Sommet
][0])+15)),
((T_Coordonnees
[Num_Sommet
][1])+15) );
str.setNum(Num_Sommet);
painter.drawText( point,str);
}
}
//main.cpp
#include <QApplication>
#include "FenPrincipale.h"
int main(int argc, char* argv[])
{
FenPrincipale fenetre;
fenetre.show();
return app.exec();
}
///////////the Headers//////////////////////
//FenPrinicipale.h
#ifndef FENPRINCIPALE_H
#define FENPRINCIPALE_H
#include <QtGui>
class FenPrincipale : public QWidget
{
Q_OBJECT
public:
FenPrincipale();
bool M[10][10];
private slots:
void FillIn();
void FenetreDessin();
private:
QTableWidget *tabM;
QPushButton * generer;
QPushButton * dessiner;
QVBoxLayout * vbox;
};
#endif // FENPRINCIPALE_H
//FenDessin.h
#ifndef FENDESSIN_H
#define FENDESSIN_H
#include <QtGui>
class FenDessin : public QDialog
{
public:
FenDessin ( QWidget *parent);
private:
QPushButton *fermer;
QPainter *painter;
private slots:
void paintEvent (QPaintEvent *);
};
#endif // FENDESSIN_H
//FenPrincipale.cpp
#include "qDebug.h"
#include "FenPrincipale.h"
#include "FenDessin.h"
FenPrincipale::FenPrincipale()
{
tabM =new QTableWidget(this);
tabM->setRowCount(10);
tabM->setColumnCount(10);
generer = new QPushButton("&Générer !",this);
QVBoxLayout* vbox = new QVBoxLayout();
vbox->addWidget(generer);
vbox->addWidget(dessiner);
vbox->addWidget(tabM);
this->setLayout(vbox);
for (int r = 0; r < 10; r++) {
for (int c = 0; c < 10; c++) {
QTableWidgetItem *it = new QTableWidgetItem;
tabM->setItem(r, c, it);
it->setData(Qt::EditRole, 0);
}
}
connect(generer, SIGNAL(clicked()), this, SLOT(FillIn()));
}
void FenPrincipale::FillIn()
{
for (int r = 0; r < 10; r++) {
for (int c = 0; c < 10; c++) {
QTableWidgetItem *it = tabM->item(r,c);;
Q_ASSERT(it);
qDebug() <<it;
int val = (it->data(Qt::EditRole)).toInt();
M[r][c] = (val == 1)? true: false;
qDebug() <<M[r][c];
}
}
connect(dessiner, SIGNAL(clicked()), this, SLOT(FenetreDessin()));
}
void FenPrincipale::FenetreDessin()
{
FenDessin *fenetreCC = new FenDessin( this);
fenetreCC->exec();
}
//FenDessin.cpp
#include "FenDessin.h"
FenDessin::FenDessin( QWidget *parent = 0) :QDialog(parent)
{
fermer = new QPushButton("Fermer",this);
QPaintEvent *c;
paintEvent(c);
connect(fermer, SIGNAL(clicked()), this, SLOT(accept()));
}
void FenDessin::paintEvent(QPaintEvent *c)
{
QPainter painter(this);
int o,p;
for (o=0; o<10; o++)
{
for (p=0; p<10; p++)
{
M[o][p]=0;
}
}
int tour=0;
int x=10;
int y=10;
int Num_Sommet=0;
int T_Coordonnees [10][3];
for (Num_Sommet=0; Num_Sommet<10; Num_Sommet++)
{
(T_Coordonnees[Num_Sommet][0])=x;
(T_Coordonnees[Num_Sommet][1])=y;
(T_Coordonnees[Num_Sommet][2])=tour;
if (tour==0)
{
x+=35;
tour=1;
}
else
{
y+=55;
tour=0;
}
}
int w1=0;
int w2=0;
int cpt=10;
Num_Sommet=0;
for (Num_Sommet=0; Num_Sommet<10; Num_Sommet++)
{
if ( (T_Coordonnees[Num_Sommet][2])==1)
{ if(w1==0)
{
(T_Coordonnees[Num_Sommet][0])=((T_Coordonnees[Num_Sommet][0])+500) ;
w1=1;
}
else
{
if(w1==1)
{
(T_Coordonnees[Num_Sommet][0])=((T_Coordonnees[Num_Sommet][0])+250+cpt) ;
w1=0;
cpt=cpt+15;
}
}
if (Num_Sommet==9)
{
(T_Coordonnees[Num_Sommet][0])=((T_Coordonnees[Num_Sommet][0])+45) ;
}
}
else
{
if(w2==0)
{
(T_Coordonnees[Num_Sommet][0])=(T_Coordonnees[Num_Sommet][0])+200;
w2=1;
}
else
{
(T_Coordonnees[Num_Sommet][0])=(T_Coordonnees[Num_Sommet][0])+100+cpt;
w2=0;
cpt=cpt+15;
}
if (Num_Sommet==4)
{
(T_Coordonnees[Num_Sommet][0])=((T_Coordonnees[Num_Sommet][0])+45) ;
}
}
painter.drawEllipse((T_Coordonnees[Num_Sommet][0]), (T_Coordonnees[Num_Sommet][1]), 30.0, 30.0);
}
int i,j;
for (i=0; i<10; i++)
{
for (j=0; j<10; j++)
{
if (M[i][j]==1)
{
painter.drawLine((T_Coordonnees[i][0]+20),(T_Coordonnees[i][1]),(T_Coordonnees[j][0]+20),(T_Coordonnees[j][1]));
}
}
}
for (i=0; i<10; i++)
{
for (j=0; j<10; j++)
{
if ((M[i][j]==1) && (M[j][i]==1))
{
painter.drawLine((T_Coordonnees[i][0]+20),(T_Coordonnees[i][1]),(T_Coordonnees[j][0]+20),(T_Coordonnees[j][1]));
if( (T_Coordonnees[i][1]>45)||(T_Coordonnees[j][1]>45) )
{
painter.drawLine(((T_Coordonnees[i][0]+20)-10),(T_Coordonnees[i][1]),((T_Coordonnees[j][0]+20)-10),(T_Coordonnees[j][1]));
}
else
{
painter.drawLine((T_Coordonnees[i][0]+20),(T_Coordonnees[i][1]+30),(T_Coordonnees[j][0]+20),(T_Coordonnees[j][1]+30));
}
}
}
}
////////////////////////////////////////////////
Num_Sommet=0;
for (Num_Sommet=0; Num_Sommet<10; Num_Sommet++)
{
QPoint point = QPoint( (((T_Coordonnees[Num_Sommet][0])+15)), ((T_Coordonnees[Num_Sommet][1])+15) );
QString str;
str.setNum(Num_Sommet);
painter.drawText( point,str);
}
}
//main.cpp
#include <QApplication>
#include "FenPrincipale.h"
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
FenPrincipale fenetre;
fenetre.show();
return app.exec();
}
To copy to clipboard, switch view to plain text mode
I would like to declare the array M as a global variable so that the class FenDessin can use it to make the drawing without the error:
Bookmarks