[gelöst] Buttons in einer ButtonGroup enablen

Alles rund um die Programmierung mit Qt
Antworten
Rumbert
Beiträge: 48
Registriert: 25. Mai 2009 18:28
Wohnort: Witten

[gelöst] Buttons in einer ButtonGroup enablen

Beitrag 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
Rumbert
Beiträge: 48
Registriert: 25. Mai 2009 18:28
Wohnort: Witten

Beitrag 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
MiKla
Beiträge: 134
Registriert: 29. Juli 2007 15:29

Beitrag von MiKla »

oder gleich:

Code: Alles auswählen

currentRow->addButton(button, j);
Michael
Antworten