QCheckbox: Mindestens eine Checkbox muss abgehakt sein
-
Hiho Community,
ich programmiere grade ein Mini-, nein, Micro-Programm namens Password Generator. Dabei gibt es unter anderem drei Checkboxes mit den Inschriften "Enable letters", "Enable digits" und "Enable special characters". Nun ist es natürlich logisch, dass da nur maximal 2 Checkboxes nicht abgehakt sein dürfen, denn ein Passwort ohne Buchstaben, Ziffern und Sonderzeichen ist - o wunder - kein Passwort.
Um dies dann halt zu verhindern habe ich mir gedacht, dass ich folgendes baue:
connect(enable_letters, &QCheckBox::stateChanged, [this]{ if(nothing_is_checked()) enable_letters->setChecked(true); }); connect(enable_digits, &QCheckBox::stateChanged, [this]{ if(nothing_is_checked()) enable_letters->setChecked(true); }); connect(enable_characters, &QCheckBox::stateChanged, [this]{ if(nothing_is_checked()) enable_characters->setChecked(true); });
Soweit funktioniert das halt auch ganz gut, aber der extrem schnelle Klicker kriegt das dann doch noch so hin, dass schlussendlich nichts mehr abgehakt ist und das darf unter keinen Umständen passieren.
Lange Rede, kurzer Sinn: Hat jemand eine Ahnung wie ich das um jeden Preis verhindern kann?
Mit außerordentlich und übertrieben freundlichen Grüßen,
ein Notizblock!
-
Btw, da ist noch ein minimaler Fehler in meinem geposteten Code-Schnipsel, aber das tut nicht zur Sache.
Dennoch, hier die korrekte Version:
connect(enable_letters, &QCheckBox::stateChanged, [this]{ if(nothing_is_checked()) enable_letters->setChecked(true); }); connect(enable_digits, &QCheckBox::stateChanged, [this]{ if(nothing_is_checked()) enable_digits->setChecked(true); }); connect(enable_characters, &QCheckBox::stateChanged, [this]{ if(nothing_is_checked()) enable_characters->setChecked(true); });
-
Würde ich nicht machen. Du kannst beim Klick auf OK einen Fehler bringen, dass der Benutzer was auswählen soll.
-
Mechanics schrieb:
Würde ich nicht machen. Du kannst beim Klick auf OK einen Fehler bringen, dass der Benutzer was auswählen soll.
Soweit hab ich netmal gedacht!
Dankeschön, dann werde ich das so machen.