
comme je l'ai dis je débute avec Qt, donc je prend toutes les idée sont bonne à prendre
Donc je vais de ce pas regarder à QGraphicsScene !
actuellement mon choix c'était porter sur la création d'un widget contenant les coordonnées et réimplémentant la méthode mousePressEvent de telle sorte que quand on clique sur ce widget il nous renvoie ca position.
je réimplémente aussi la fonction paintEvent où j'utilise Qpainter pour dessiner dedans
voici le code de l'élément :
Code : Java 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 | class Elem extends QWidget{
public Signal2<Integer,Integer> cliqued = new Signal2<Integer,Integer>();
Integer x = 0;
Integer y = 0;
public Elem(QWidget parent,Integer x1,Integer y1){
super(parent);
this.x = x1;
this.y = y1;
this.resize(new QSize(50,50));
//QLabel label = new QLabel(this);
//label.setText(""+x+" : "+y);
}
protected void mousePressEvent(QMouseEvent arg1){
if (arg1.button()==MouseButton.LeftButton){
this.cliqued.emit(y,x);
System.out.println(""+y+" : "+x);
}
}
protected void paintEvent(QPaintEvent e) {
QPainter painter = new QPainter(this);
painter.setBrush(QColor.white);
painter.drawRect(rect());
painter.end();
}
}
|
Pour créé le plateau je fais actuellement deux boucle imbriquée qui crée un widget elem et qui l'intègre dans le gridLayout à l'endroit désiré ainsi que dans un tableau d'elem pour garder une référence vers les cases afin de pouvoir appeller leurs future méthodes d'affichage.
Code : Java 1
2
3
4
5
6
7
8
9
10
11
12 | public Plateau(QWidget parent){
super(parent);
QGridLayout gridLayout = new QGridLayout();
gridLayout.setSpacing(0);
tableau = new Elem[10][10];
for(int y=0;y<10;y++)
for(int x=0;x<10;x++){
tableau[y][x] = new Elem(this,x,y);
gridLayout.addWidget(tableau[y][x],y,x);
}
this.setLayout(gridLayout);
}
|
Merci à ceux qui m'aiderons à m'améliorer