Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

PushButtoin in ein 2D Array?



  • Hallo Zusammen,

    hat jemand eine Idee, wie man ein 2D Array von Pushbuttons
    über einen Connect verbindet, welches auf einen einzige Slot
    zeigt, welcher für alle QPushButton zuständig ist.

    Ich habe eine Reihe von Buttons, welche die gleiche Aufgabe
    erledigen sollen.

    Ich programmiere für ein Schulprojekt TicTacToe.
    Ich habe dynamisch ein Gridlayout erzeugt, welches ein 3x3 Spielfeld aus PushButtons hat.

    Ich möchte die Buttons in ein Array laden, um es leichter auszuwerten welcher Spieler eine Reihe voll hat :)
    Ich habe gehört, dass es anscheinend besser gehen soll die Buttons in ein Array zu laden, wenn man das Spielfeld dynamisch anlegt.

    code_text
    
    TTT_Test::TTT_Test(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::TTT_Test)
    {
        ui->setupUi(this);
    
    
        // Grid layout with 9 buttons
           QGridLayout *gridLayout = new QGridLayout;
           QPushButton *b1 = new QPushButton();
           QPushButton *b2 = new QPushButton();
           QPushButton *b3 = new QPushButton();
           QPushButton *b4 = new QPushButton();
           QPushButton *b5 = new QPushButton();
           QPushButton *b6 = new QPushButton();
           QPushButton *b7 = new QPushButton();
           QPushButton *b8 = new QPushButton();
           QPushButton *b9 = new QPushButton();
    
           // addWidget(*Widget, row, column, rowspan, colspan)
           // 0th row
           gridLayout->addWidget(b1,0,0,1,1);
           gridLayout->addWidget(b2,0,1,1,1);
           gridLayout->addWidget(b3,0,2,1,1);
    
           // 1st row with 2-column span
           gridLayout->addWidget(b4,1,0,1,1);
           gridLayout->addWidget(b5,1,1,1,1);
           gridLayout->addWidget(b6,1,2,1,1);
    
    
    
           // 2rd row with 3-column span
           gridLayout->addWidget(b7,2,0,1,1);
           gridLayout->addWidget(b8,2,1,1,1);
           gridLayout->addWidget(b9,2,2,1,1);
    
           // Create a widget
           QWidget *w = new QWidget();
    
           // Set the grid layout as a main layout
           w->setLayout(gridLayout);
    
           w->setStyleSheet("QPushButton { background-color: white;"
                            "height:135px;"
                            "width:150px;"
                            "border: 1px solid  black;}");
    
           // Display
           w->show();
    

  • Lifetime Qt Champion

    @Martin-H said in PushButtoin in ein 2D Array?:

    Gridlayout erzeugt, welches ein 3x3

    dann solltest du auch in der Lage sein QPushButton* in einen 2D Vector zu packen, oder?
    Wegen Slot: benutze Lambda-Functions, dann kannst du auch x/y für jeden Button mit nehmen.


Log in to reply