Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Qt Jambi]

récupération id éméteur

    7 juillet 2008 à 17:25:27

    Salut,
    voil dans mon temps libre je découvre Qt Jambi, pour ce faire j'ai lus le tuto de natim et j'ai voulus pour le tester faire un petit jeu de dame.
    j'ai donc fais un tableau de QPushButton comme suit :
    for(int x=0;x<10;x++)
            for(int y=0;y<10;y++)
            	gridLayout.addWidget(new QPushButton(""+x+" : "+y),x,y);
    

    mais quand je lie le bouton à ma méthode de traitement j'ai besoin de savoir quelle est l'émetteur du signal vu que mes 100 bouton ce retrouve lé à la même méthode...
    Merci à ceux qui me lirons.
    • Partager sur Facebook
    • Partager sur Twitter
      8 juillet 2008 à 9:56:57

      Perso je trouve plus simple d'utiliser un QGraphicsScene et un tableau d'images.
      • Partager sur Facebook
      • Partager sur Twitter
        9 juillet 2008 à 8:39:22

        :) comme je l'ai dis je débute avec Qt, donc je prend toutes les idée sont bonne à prendre :D
        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 :
        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.
        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 ;)
        • Partager sur Facebook
        • Partager sur Twitter

        [Qt Jambi]

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown