hichemnho
5th February 2012, 20:29
Hello ,
I am a beginner in C++ and I am trying , but without success to draw a line between two circles .The condition that must be repsected to draw this line is that the element of the array M[i][j]==1 where i is the departure circle and j the second one.For reasons that I really do not understand other lines are drawn .
Here is the code:
// The header arbre.h
#ifndef ARBRE_H
#define ARBRE_H
#include <QtGui>
class Arbre : public QWidget
{
Q_OBJECT
public:
Arbre();
private slots:
//void dessin ();
private:
//QTableWidget* tableWidget;
//QPushButton * Valider;
QPainter *painter;
int M [6][6];
void paintEvent(QPaintEvent *);
};
#endif // ARBRE_H
//arbre.cpp
#include "arbre.h"
#include "math.h"
#include <QtGui>
Arbre::Arbre()
{
QPaintEvent *e;
paintEvent(e);
}
void Arbre::paintEvent(QPaintEvent *e)
{
QPainter painter(this);
M[0][1]=1;
M[1][0]=1;
//M[1][2]=1;
M[0][3]=1;
// M[0][4]=1;
//M[0][5]=1;
bool tour=false;
int x=35;
int y=45;
int Num_Sommet=0;
int T_Coordonnees [6][6];
for (Num_Sommet=0; Num_Sommet<6; Num_Sommet++)
{
painter.drawEllipse(x, y, 30.0, 30.0);
(T_Coordonnees[Num_Sommet][0])=x;
(T_Coordonnees[Num_Sommet][1])=y;
if (tour==false)
{
x+=85;
tour=true;
}
else
{
y+=95;
tour=false;
}
}
int i,j;
for (i=0; i<6; i++)
{
for (j=0; j<6; j++)
{
if (M[i][j]==1)
{
painter.drawLine((T_Coordonnees[i][0]),(T_Coordonnees[i][1]),(T_Coordonnees[j][0]),(T_Coordonnees[j][1]));
}
}
}
Num_Sommet=0;
for (Num_Sommet=0; Num_Sommet<6; 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 "arbre.h"
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
Arbre fenetre;
fenetre.show();
return app.exec();
}
I thank you in advance for your time and I wish that someone could help to find out where the problem is.
I am a beginner in C++ and I am trying , but without success to draw a line between two circles .The condition that must be repsected to draw this line is that the element of the array M[i][j]==1 where i is the departure circle and j the second one.For reasons that I really do not understand other lines are drawn .
Here is the code:
// The header arbre.h
#ifndef ARBRE_H
#define ARBRE_H
#include <QtGui>
class Arbre : public QWidget
{
Q_OBJECT
public:
Arbre();
private slots:
//void dessin ();
private:
//QTableWidget* tableWidget;
//QPushButton * Valider;
QPainter *painter;
int M [6][6];
void paintEvent(QPaintEvent *);
};
#endif // ARBRE_H
//arbre.cpp
#include "arbre.h"
#include "math.h"
#include <QtGui>
Arbre::Arbre()
{
QPaintEvent *e;
paintEvent(e);
}
void Arbre::paintEvent(QPaintEvent *e)
{
QPainter painter(this);
M[0][1]=1;
M[1][0]=1;
//M[1][2]=1;
M[0][3]=1;
// M[0][4]=1;
//M[0][5]=1;
bool tour=false;
int x=35;
int y=45;
int Num_Sommet=0;
int T_Coordonnees [6][6];
for (Num_Sommet=0; Num_Sommet<6; Num_Sommet++)
{
painter.drawEllipse(x, y, 30.0, 30.0);
(T_Coordonnees[Num_Sommet][0])=x;
(T_Coordonnees[Num_Sommet][1])=y;
if (tour==false)
{
x+=85;
tour=true;
}
else
{
y+=95;
tour=false;
}
}
int i,j;
for (i=0; i<6; i++)
{
for (j=0; j<6; j++)
{
if (M[i][j]==1)
{
painter.drawLine((T_Coordonnees[i][0]),(T_Coordonnees[i][1]),(T_Coordonnees[j][0]),(T_Coordonnees[j][1]));
}
}
}
Num_Sommet=0;
for (Num_Sommet=0; Num_Sommet<6; 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 "arbre.h"
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
Arbre fenetre;
fenetre.show();
return app.exec();
}
I thank you in advance for your time and I wish that someone could help to find out where the problem is.