[gelöst]Checkbox Tristate Status setzen
[gelöst]Checkbox Tristate Status setzen
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
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
Zuletzt geändert von peterle71 am 1. Juni 2007 13:20, insgesamt 2-mal geändert.
Code: Alles auswählen
void QCheckBox::setCheckState ( Qt::CheckState state )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?
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?
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
Verwechsle nichtvoid QCheckBox::setCheckState ( Qt::CheckState state ) ist nicht protected.
Code: Alles auswählen
setState()Code: Alles auswählen
setCheckState()In dieser Version gibt es die MethodesetState() die gleichen Funktionalitäten erfüllt.
Code: Alles auswählen
setCheckState() nicht. Daher habe ich angenommen, daß 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?Ist die Doku so unverständlich?
Code: Alles auswählen
void QCheckBox::setChecked ( bool check )
void QCheckBox::setNoChange ()Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Es geht nicht um die Ausdrucksweise sondern die Tatsache an sich: "Annehmen" ist immer riskant, man sollte sich vergewissern.peterle71 hat geschrieben:Über die Ausdrucksweisen kann man bekanntlich lang diskutieren.
Da bleibt dir wohl nix anderes übrig, als deine eigene Klasse von QCheckbox abzuleiten und dann dort
Code: Alles auswählen
setState()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);}
};