Seite 1 von 1
QRadioButton abfragen
Verfasst: 13. März 2009 12:32
von Klausn
hi zusammen,
wie bekommt man den status eines Radio Buttons raus ??
ich frage den button so ab:
while(abfrage->scanpath_1box->state()!=2)
geht das überhaupt so ??
Ich habe den leisen Verdacht, das da nicht mal was ankommt.
schonmal danke im voraus
Verfasst: 13. März 2009 13:24
von pfid
http://doc.trolltech.com/4.4/qradiobutton.html
http://doc.trolltech.com/4.4/qabstractbutton.html
Man sollte das Forum erweitern, so dass man einen Beitrag nur abschicken kann, wenn man vorher die Checkbox "Ja, ich habe die Doku zu meinem Problem gelesen" angeklickt hat
Btw: Was willst du mit der while-Schleife erreichen?
Verfasst: 13. März 2009 13:32
von Klausn
Ich will das das was in der schleife ist, nur ausgeführt wird wenn der radiobutton aktiviert ist !
Ich habe insgesamt 4 Radio-Buttons .. die aber alle eine unterschiedliche Funktionen ausführen sollen.
im übrigen vergaß ich zu erwähnen das ich nur QT3.3.3 verwende !
Verfasst: 13. März 2009 13:35
von chrislo1976
Und wie kommst du aus der Schleife wieder raus wenn der RadioButton mal aktiviert ist???
Wenn die Schleife nicht mehr verlassen wird friert deine GUI ein, dann wird sich auch der Zustand des RadioButtons nicht mehr ändern...
Gruß,
Christian
Verfasst: 13. März 2009 13:36
von Klausn
Die Austrittsanweisung hab ich hier nicht gepostet !
Ausserdem kann ich doch jederzeit mit nem break; rausspringen.
Verfasst: 13. März 2009 13:38
von franzf
Deine Endlosschleife wird sicherlich nicht funktionieren, wenn du nie in die eventloop zurückkommst, die sich darum kümmert, was gerade mit den GUI-Elementen passieren soll (z.B. clicked(), checked() usw.).
Der Qt-Way ist, dass du das clicked()-SIGNAL (oder welches du verwenden willst) mit nem SLOT verbindest, der sich dann um diese spezielle AUfgabe kümmert (lies dir dadurch ruhig die Doku + Beispiele durch...).
Wenn du WIRKLICH WIRKLICH sicher bist, dass du unbedingt das alles in ner (Endlos)Schleife machen MUSST (weil weder SIGNAL/SLOT noch QThread in Frage kommen) bau doch ein QApplication::processEvents() in die Schleife ein. Wird bei viel Rechenaufwand in deiner Schleife aber eine recht hackelige GUI hinterlassen.
Verfasst: 13. März 2009 13:40
von RavenIV
Klausn hat geschrieben:Die Austrittsanweisung hab ich hier nicht gepostet !
Ausserdem kann ich doch jederzeit mit nem break; rausspringen.
Nicht sehr elegant mit dem break.
warum nicht:
if (...state() == 2) ....
else if (...state() == 3) ...
else if (...state() == 4) ...
oder gleich einen switch nehmen.
Verfasst: 13. März 2009 13:40
von chrislo1976
Und warum reicht dann kein einfaches:
Das führt den gewünschten Code nur dann aus wenn der RadioButton gedrückt ist, anderfalls eben nicht.
Genau wie pfid frage ich mich warum eine Schleife?
Gruß,
Christian
Verfasst: 13. März 2009 13:51
von pfid
Klausn hat geschrieben:
im übrigen vergaß ich zu erwähnen das ich nur QT3.3.3 verwende !
http://doc.trolltech.com/3.3/qradiobutton.html
Verfasst: 16. März 2009 11:40
von Klausn
@pfid
wie soll ich sonst ohne schleife vier radio buttons abfragen ?
jeder radiobutton soll eine andere funktion ausführen.
das hier funktioniert nicht... die schleife wird auch bei FALSE durchlaufen
if( sup->scanpath_1box->isChecked() == TRUE )
{
anweisung
}
ich denke das die abfrage des radiobuttons so nicht hinhaut.. und die Doku hab ich mittlerweile gelesen ! Trotzdem funktionierts noch nicht !
Verfasst: 16. März 2009 11:56
von pfid
Klausn hat geschrieben:@pfid
wie soll ich sonst ohne schleife vier radio buttons abfragen ?
jeder radiobutton soll eine andere funktion ausführen.
das hier funktioniert nicht... die schleife wird auch bei FALSE durchlaufen
if( sup->scanpath_1box->isChecked() == TRUE )
{
anweisung
}
ich denke das die abfrage des radiobuttons so nicht hinhaut.. und die Doku hab ich mittlerweile gelesen ! Trotzdem funktionierts noch nicht !
Wie willst du den Button denn sonst abfragen?
bool QRadioButton::isChecked () const
Returns TRUE if the radio button is checked; otherwise returns FALSE. See the "checked" property for details.
Soll nicht arrogant klingen, aber wenn "anweisung" ausgeführt wird, würde das entweder bedeuten dass"scanpath_1box" angekreuzt ist, oder QT wundersamerweise bei isChecked() true liefert, obwohl der Radiobutton nicht gewählt ist.
Und was hat das ganze mit Schleifen zu tun? Weil deine if-Abfrage scheinbar nicht funktioniert, baust du ne Schleife drumrum damit sie irgendwann mal funktioniert, oder wie versteh ich das?
Verfasst: 16. März 2009 11:59
von franzf
Ist eigentlich Qt-Grundlage (SIGNAL/SLOT).
Dein QRadioButton erbt von QButton. Dieser wiederum hat SIGNALS, wie clicked() oder stateChanged( int state ). Diese Signale einfach an einen SLOT hängen (connect()), der die jeweilige Aufgabe erledigt. Kannst natürlich auch das Signal eines jeden deiner 4 RadioButtons auf den gleichen SLOT legen, und da dann alle States abfragen, wenn du ganz bestimmte Aktionen nur bei bestimmten Kombinationen deiner States haben willst.