Seite 1 von 1

[gelöst] Buttons in einer ButtonGroup enablen

Verfasst: 17. Juni 2009 22:37
von Rumbert
Hallo Miteinander!

Ich erstelle mir ein Feld mit Buttons, die ich erstmal alle disable. Dann möchte ich mir eine bestimmte Zeile von den Buttons enablen. Dazu habe ich mir folgenden Code ausgedacht der zur Laufzeit abstürzt :-(

Code: Alles auswählen

 QList<QButtonGroup*> row;

// Button Feld anlegen, jede Zeile in einer ButtonGroup und die Buttongroups in einer QList sammeln
	 for (int i = 0; i < 12; ++i) 
	 {
		QButtonGroup* currentRow = new QButtonGroup();
		for (int j = 0; j< 4; ++j)
		{
			QPushButton *button = new QPushButton(QString::number(i,10),NULL);
			currentRow->addButton(button);
			qgl_Spielfeld->addWidget(button, i, j);
			button->setEnabled(false);
		}
		row << currentRow;
	 }

// eine Spezielle Reihe an Buttons enablen
 int rowNumber = 0;
	for (int i = 0; i< 4;i++)
	{
		row.at(rowNumber)->button(i)->setEnabled(true);
	}
Das Problem ist, dass die Buttons die ich an der stelle i eigentlich wieder auslesen wollte alle Null sind. Was ist denn hier bloß falsch?
Bin für jeden Tipp dankbar!

Grüße Rumbert

Verfasst: 18. Juni 2009 22:42
von Rumbert
Falls jemand ein ähnliches Problem hat, der Fehler lag in der for Schleife:

Code: Alles auswählen

// ### FEHLERHAFTER CODE ###
// eine Spezielle Reihe an Buttons enablen
 int rowNumber = 0;
   for (int i = 0; i< 4;i++)
   {
      row.at(rowNumber)->button(i)->setEnabled(true);
   } 

// ### REPARIERTER CODE ###
  int rowNumber = 0;
	QList<QAbstractButton*> list = row.at(rowNumber)->buttons();
	for (int i = 0; i< 4;i++)
	{
		list.at(i)->setEnabled(true);
	}
scheinbar haben Buttons in der ButtonGroup nicht Automatisch eine ID, sondern ich muss mir alle Buttons der Group als Liste geben lassen.

Grüße Rumbert

Verfasst: 18. Juni 2009 23:22
von MiKla
oder gleich:

Code: Alles auswählen

currentRow->addButton(button, j);
Michael