dev_prototyp hat geschrieben:-Auf was bezieht sich das? Ich hab die groupBox-en im header-file via (siehe unten) deklariert:
Du deklarierst da keine GroupBox, sondern eine Methode, die eine QGroupBox zurückgibt. Wenn du auf deine GroupBoxen dann immer wieder nur über diese Methode zugreifst hast du wie gesagt ein Problem - mit jedem Aufruf kriegst du (bei deiner jetzigen Implementierung) ein anderes Objekt zurück!
Also sollte ich die groupBox in einer eignen Klasse deklarieren, was dann wohl saubrer währe...?
Nein.
kurz skizziert:
Code: Alles auswählen
class MainWindow : public QMainWindow {
Q_OBJECT
QVector<QGroupBox*> playerGroups;
QGroupBox* createPlayerGroupBox(int number) {
QGroupBox* group = new QGroupBox("Spieler " + QString::number(number+1), this);
group->setCheckable(true);
// usw.
playerGroups.append(group);
return group;
}
};
Und immer wenn du eine neue playerGroupBox brauchst, erstellst du dir die mit dem createPlayerGroupBox.
Du könntest das ganze noch absichern, dass du abfrägst, wie viele GroupBoxen schon existieren, und wenn number < numGroupBoxes -> return vector.at(i).
Ansonsten erstellst du so viele GroupBoxen, bis number im vector liegen. Dann kannst du die create-Methode gleich als sichere Zugriffsmethode verwenden.
Code: Alles auswählen
class MainWindow : public QMainWindow {
Q_OBJECT
QVector<QGroupBox*> playerGroups;
QGroupBox* createPlayerGroupBox(int number) {
if(number < playerGroups.size()) return playerGroups.at(number);
QGroupBox* group
while(playerGroups.size() <= number) {
group = new QGroupBox("Spieler " + QString::number(number+1), this);
group->setCheckable(true);
// usw.
playerGroups.append(group);
++number;
}
return group;
}
};
number ist bei beiden Beispielen der Index im Vector, nicht die Nummer auf dem Label!
connecte doch das toggled(bool) mit dem setEnabled ....
-Wie oben schon gesagt, bin ich diesen Weg bereits, leider erfolglos, abgelaufen...
Was wäre denn erfolgreich? Das ist mir noch nicht so ganz klar...