QPushButon in ein 2D Array?

Alles rund um die Programmierung mit Qt
Antworten
Martin01
Beiträge: 1
Registriert: 2. Dezember 2019 17:20

QPushButon in ein 2D Array?

Beitrag von Martin01 » 16. Dezember 2019 21:26

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: Alles auswählen


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();

}



Gruss

tamasi
Beiträge: 43
Registriert: 5. Juli 2007 15:49

Re: QPushButon in ein 2D Array?

Beitrag von tamasi » 6. Januar 2020 13:18

Ich glaube du suchst:

https://doc.qt.io/qt-5/qbuttongroup.html

Bau das Grid direkt im UI auf oder ordentlich manuell..

Also ne For-Schleife(0-8) mit 1x new button, dann addWidget (button, i/3, i%3,1) usw.
Den button in die ButtonBox zufügen und einmalig das gewünschte Signal verbinden.

Antworten