Seite 1 von 1
[gelöst]Checkbox Tristate Status setzen
Verfasst: 31. Mai 2007 18:40
von peterle71
Hallo Qt-Gemeinde.
Kann mir jemand bei meinem Problem weiterhelfen:
Ich benutze Checkboxen als eine Tristate-Box. Den Status einer Box speichere ich in einer Datei. Beim Öffnen des Benutzerdialoges, in dem ich diese verwende, möchte ich die betreffende Checkbox mit dem aus der Datei ausgelesenen Status setzten. Dabei weiß ich nicht, welchen Status ich gerade eingelesen habe.
Nun mein problem:
Die Checkbox besitzt zwar eine Methode setState(), mit der der Status gesetzt werden könnte, sie ist allerdings protected, so daß ich auf sie nicht zugreifen kann. Außerdem erwartet sie als Eingabeparameter enum QButton::ToggleState, daß nicht ohne weiteres mit dem aus der Datei ausgelsesenen Integer-Wert belegt werden kann.
Gibt es eventuell eine andere Möglichkeit, den Status der Checkbox aus Quellcode aus zu beeinflussen?
mfg
Peterle
Verfasst: 31. Mai 2007 18:59
von upsala
Code: Alles auswählen
void QCheckBox::setCheckState ( Qt::CheckState state )
ist nicht protected...
Verfasst: 1. Juni 2007 10:04
von peterle71
Hmm, die Doku von Qt 3.3.4 sagt dazu:
void QButton::setState ( ToggleState s ) [virtual protected]
Sets the toggle state of the button to s. s can be Off, NoChange or On.
Mein code sieht so aus:
chbPwdChangeDenyPageUser->setState(QCheckBox::Off);
//Wobei chbPwdChangeDenyPageUser meine Checkbox ist
Die compiler-Meldung dazu:
error C2248: 'setState' : cannot access protected member declared in class 'QButton'
c:\qt\3.3.4-debug\include\qbutton.h(122) : see declaration of 'setState'
Was läuft da falsch?
Qt::CheckState kennt anscheinend diese Version nicht.
Kann es sein, daß es in dieser älterer Version anders ist?
Verfasst: 1. Juni 2007 11:14
von neuschi
peterle71 hat geschrieben:Hmm, die Doku von Qt 3.3.4 sagt dazu:
<snip>
Kann es sein, daß es in dieser älterer Version anders ist?
1. Solltest du erwähnen, mit welcher Qt Version du arbeitest. Wir sind alle keine Hellseher.
2. schrieb upsala weiter oben
void QCheckBox::setCheckState ( Qt::CheckState state ) ist nicht protected.
Verwechsle nicht
mit
\Ralf
Verfasst: 1. Juni 2007 11:23
von peterle71
In dieser Version gibt es die Methode
setState() die gleichen Funktionalitäten erfüllt.
Verfasst: 1. Juni 2007 11:26
von peterle71
Code: Alles auswählen
setCheckState()
[/quote] wäre genau die Methode, die ich bräuchte. Gibt es denn in Version 3.3.4 ein Pendant dazu?
Verfasst: 1. Juni 2007 11:29
von neuschi
peterle71 hat geschrieben: Daher habe ich angenommen, daß ...
"Annehmen" heisst auf englisch "Assume".
Bei uns gibts den Spruch "
Assume makes an
Ass of
u and
me"

Ralf
Verfasst: 1. Juni 2007 11:40
von peterle71
Über die Ausdrucksweisen kann man bekanntlich lang diskutieren. Bring mich allerdings bei meinem Problem nicht weiter

Verfasst: 1. Juni 2007 12:07
von macman
Ist die Doku so unverständlich?
Code: Alles auswählen
void QCheckBox::setChecked ( bool check )
void QCheckBox::setNoChange ()
Verfasst: 1. Juni 2007 12:13
von neuschi
peterle71 hat geschrieben:Über die Ausdrucksweisen kann man bekanntlich lang diskutieren.
Es geht nicht um die Ausdrucksweise sondern die Tatsache an sich: "Annehmen" ist immer riskant, man sollte sich vergewissern.
Da bleibt dir wohl nix anderes übrig, als deine eigene Klasse von QCheckbox abzuleiten und dann dort
zu implementieren:
Code: Alles auswählen
class PeterlesTristateBox : public QCheckBox
{
public:
PeterlesTristateBox ( QWidget * parent, const char * name = 0 ) : QCheckBox(parent, name)
{
setTristate(true);
}
void setState ( ToggleState s ) { QCheckBox:.setState(s);}
};
[gelöst]
Verfasst: 1. Juni 2007 13:01
von peterle71
OK, Danke für die Hilfe