Partage
  • Partager sur Facebook
  • Partager sur Twitter

changer un widget de position ds un QGridLayout

Sujet résolu
    15 novembre 2018 à 20:56:39

    Est il possible de changer un QWidgets de place dans QGridLayout

    Si oui dites moi comment faire s'il vous plait

    • Partager sur Facebook
    • Partager sur Twitter
      17 novembre 2018 à 10:43:33

      Bonjour, aurais tu un peu plus d'infos.

      C'est dans quel contexte?

      as tu du code a montrer?

      • Partager sur Facebook
      • Partager sur Twitter
        17 novembre 2018 à 20:15:59

        je suis débutant et je souhaite créer un tétris je veux donc qu'un widget placé dans un QGridLayout "tombe" dans celui ci et j'aimerai pouvoir accéder au x et y de ce widget dans le QGridLayout "tombe".
        • Partager sur Facebook
        • Partager sur Twitter
          18 novembre 2018 à 11:34:01

          oui mais j'essaye d'en faire un à ma manière même si on peut faire mieux
          • Partager sur Facebook
          • Partager sur Twitter
            18 novembre 2018 à 23:09:06

            Ok, je ne pense pas que cela soit possible de "bouger" le widget.

            Il faut d'abord l'enlever, puis le remettre. Ensuite, pour que cela fonctionne, il faut que les "cases" du QGridLayout existent.

            Voici un exemple:

            Widget.h

            class Widget : public QWidget
            {
                Q_OBJECT
            
            public:
                explicit Widget(QWidget *parent = nullptr);
                ~Widget();
            
            private slots:
                void on_pushButtonDroite_clicked();
            
                void on_pushButtonBas_clicked();
            
            private:
                Ui::Widget *ui;
               QGridLayout *grille;
               QToolButton *b1;
            };

            le Widget.cpp

            Widget::Widget(QWidget *parent) :
                QWidget(parent),
                ui(new Ui::Widget)
            {
                ui->setupUi(this);
                grille=new QGridLayout();
                b1=new QToolButton();
                b1->setStyleSheet("background-color : red");
                grille->addWidget(b1,1,1);
                for(int row=0;row<10;row++)
                {
                    grille->addWidget(new QToolButton,row,0);
                    grille->addWidget(new QToolButton,row,10);
                }
                for (int col=1;col<10;col++)
                {
                    grille->addWidget(new QToolButton,0,col);
                    grille->addWidget(new QToolButton,9,col);
                }
            
            
                grille->addWidget(ui->pushButtonDroite,11,12);
                grille->addWidget(ui->pushButtonBas,12,12);
                grille->addWidget(ui->pushButtonQuitter,13,12);
                setLayout(grille);
            
            }
            
            Widget::~Widget()
            {
                delete ui;
            }
            
            void Widget::on_pushButtonDroite_clicked()
            {
                int row,column,rs,cs;
                int index=grille->indexOf(b1);
                grille->getItemPosition(index,&row,&column,&rs,&cs);
                grille->removeWidget(b1);
                grille->addWidget(b1,row,column+1);
            
            }
            
            void Widget::on_pushButtonBas_clicked()
            {
                int row,column,rs,cs;
                int index=grille->indexOf(b1);
                grille->getItemPosition(index,&row,&column,&rs,&cs);
                grille->removeWidget(b1);
                grille->addWidget(b1,row+1,column);
            }




            -
            Edité par bxdfr 18 novembre 2018 à 23:09:44

            • Partager sur Facebook
            • Partager sur Twitter
              19 novembre 2018 à 19:47:54

              merci beaucoup pour ces réponse très clair

              -
              Edité par GuédaliaLoubaton 19 novembre 2018 à 19:49:12

              • Partager sur Facebook
              • Partager sur Twitter

              changer un widget de position ds un QGridLayout

              × 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