PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : QCheckboxen ausschalten



fs111
10-09-2002, 18:48
Hallo Mitleser!

Ich habe folgendes Problem mit QCheckboxes, und zwar habe ich so um die 20 Stück in drei verschiedenen QButtonGroups angeordnet, sodass ich immer die id einer solchen bekommen kann. Nun möchte ich es erreichen, dass, sobald 5 dieser checkboxen angewählt wurden, alle anderen nicht mehr anwählbar sind.

Ich habe einen counter, der dieses mitzählt, der auch funktioniert. Nun weiß ich nicht, wie ich die checkboxen ausschalten soll. Ich habe pro Button Group ein array von boolschen Werten angelegt, wobei ein Wert TRUE ist, wenn eine checkbox ausgewählt ist, und FALSE, wenn nicht. Nun will ich mit einer for Schleife durch die arrays gehen, und mithilfe von QButtonGroup::find() die jenigen ausschalten, die nicht angewählt sind. An dieser Stelle weiß ich nicht mehr weiter, weil ich nicht weiß, wie das dann mit den Pointern gemacht wird (dieses Konstrukt werde ich wohl nie begreifen).

Könnt Ihr mir da helfen?

Danke und ich hoffe es war verständlich

fs111

anda_skoa
10-09-2002, 19:39
Du kannst alle QWidgets mit setEnabled(false) deaktivieren bzw. mit true aktivieren.

Ich weiß jetzt nicht wie dein Code aussieht, aber wenn ich dich richtig verstanden habe, ist in etwa so



for (uint id =0; id < maxid; ++i)
{
QButton* checkBox = buttonGroup->find(id);
if (checkBox != 0)
{
checkBox->setEnabled( enableCB[id] );
}
}


Wobei ich annahm, dass
- die ButtonGroup Variable buttonGroup heißt.
- maxid die größe ID ist
- enableCB der Array ist, in dem steht, welche CheckBox aktiv sein soll.

hth,
_

fs111
11-09-2002, 13:09
Das sieht so schon ganz gut aus, nur müsste es andersrum funktionieren, und zwar soll dass array ausgewertet werden, und überall, wo da "false" drinsteht, soll der Knopf ausgeschaltet werden.

Um es mal zu verdeutlichen, ich habe einen Dialog in dem man sich eine Pizza zusammenstellen kann, nur sind eben nicht mehr als 5 Zutaten pro Pizza möglich. Wenn jetzt also 5 Zutaten ausgewählt sind, dann sollen alle anderen nicht mehr anklickbar sein. Es muss also nach Auswahl der 5. Zutat das array mit den true und false Werten ausgewertet werden, und alle die auf false sind, also nicht ausgewählt sind, sollen disabled werden.

Danke und Grüße

fs111

anda_skoa
11-09-2002, 13:40
Das tut es doch mehr oder weniger schon :)

Wenn im Array enableCb true steht, bleibt die CheckBox enabled.
Wenn false drinnen steht, wird sie disabled.

Ciao,
_

fs111
11-09-2002, 13:44
Alles klar, habe es hinbekommen, Danke für den Ansatz!


Grüße fs111