Hallo,
ich bin qt Neuling und möchte beim Klick auf einen Button eine GroupBox unsichtbar machen (und beim Klick auf einen anderen Button diese wieder sichtbar machen).
Hatte gehofft, dass es ganz einfach geht mit "hide(GroupBox);" ... und "void hide();" steht bei mir im Header unter public slots.
Aber dabei kommt die Fehlermeldung "GroupBox was not declared in this scope". ("GroupBox" ist der Name der GroupBox). Vor vielen Jahren habe ich mal mit Delphi gearbeitet, da hat lediglich die Zeile "GroupBox.visible=false" genügt... aber hier muss man offensichtlich die GroupBox noch irgendwie deklarieren, ich weiß nur leider nicht wie.
Ich hoffe aber immernoch dass es ganz simpel mit 2-3 Zeilen Code funktioniert =)
Grüße,
QtFanboy
GroupBox unsichtbar machen
-
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Re: GroupBox unsichtbar machen
Eine Variable GroupBox zu nennen ist nicht gerade sinnvoll - das bringt nur Verwechslungen. Member sollten z.. immer mit m_ oder m anfangen.
Zu deinen Problem: Ohne Code können wir nichts sagen. Sieht so aus als würde die Variable nicht wirklich 'GroupBox' heißen - sonst würde der Compiler ja nicht meckern.
Abgesehen davon wäre es dann GroupBox.hide() und nicht hide(GroupBox) -> C++ Grundlagen !
Zu deinen Problem: Ohne Code können wir nichts sagen. Sieht so aus als würde die Variable nicht wirklich 'GroupBox' heißen - sonst würde der Compiler ja nicht meckern.
Abgesehen davon wäre es dann GroupBox.hide() und nicht hide(GroupBox) -> C++ Grundlagen !
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Re: GroupBox unsichtbar machen
Also jetzt mal ausführlicher:
Habe den Qt Designer verwendet und eine GroupBox in mein Fenster geschoben. Habe den Standardnamen "GroupBox" einfach so belassen.
Dann habe ich noch einen Button eingefügt und mit Signale&Slots eine Funktion ("changeBezierBspline()") erzeugt. Beim Klick auf den Button sollen zwei Dinge passieren: Eine Variable ("button") soll hoch gezählt werden und die GroupBox soll unsichtbar werden. Hier der entsprechende Code aus meiner cpp:
button = 0;
...
void MyPanelOpenGL::changeBezierBspline(){
button = button+1;
GroupBox.hide();
updateGL();
}
und aus der meiner Header:
private:
int button;
public slots:
void changeBezierBspline();
Das Hochzählen der Variable funktioniert.
Ich weiß halt nur nicht wo und wie ich "GroupBox" deklarieren soll; Hatte gehofft dass dies automatisch geschieht wenn ich eine GroupBox mittels QtDesigner einfüge.
Habe den Qt Designer verwendet und eine GroupBox in mein Fenster geschoben. Habe den Standardnamen "GroupBox" einfach so belassen.
Dann habe ich noch einen Button eingefügt und mit Signale&Slots eine Funktion ("changeBezierBspline()") erzeugt. Beim Klick auf den Button sollen zwei Dinge passieren: Eine Variable ("button") soll hoch gezählt werden und die GroupBox soll unsichtbar werden. Hier der entsprechende Code aus meiner cpp:
button = 0;
...
void MyPanelOpenGL::changeBezierBspline(){
button = button+1;
GroupBox.hide();
updateGL();
}
und aus der meiner Header:
private:
int button;
public slots:
void changeBezierBspline();
Das Hochzählen der Variable funktioniert.
Ich weiß halt nur nicht wo und wie ich "GroupBox" deklarieren soll; Hatte gehofft dass dies automatisch geschieht wenn ich eine GroupBox mittels QtDesigner einfüge.
Re: GroupBox unsichtbar machen
Wenn du im Designer eine Form entwirfst, ist das Ergebnis ja eine "ui"-Datei (die XML-Beschreibung) und später (nach dem Compilen) eine C++-Header-Datei mit einer entsprechenden Klasse. Du kannst diese auf drei Arten anwenden. Siehe
http://doc.qt.nokia.com/latest/designer ... -file.html
Weil du nicht schreibst, welche Variante du genommen hast (Direct, Single Inh., oder Multi Inh.) können wir dir auch nicht den genauen Syntax mitteilen..
Kleiner Hinweis noch: Egal ob du selbst ein Pointer deklarierst oder ob du den Pointer einer UI-Klasse nimmst: es ist ein Pointer und du brauchst daher auch die Pointer-Schreibweise:
Aber wie Christian schon gesagt hat: das sind C++-Grundlagen.. es wäre besser wenn du die dir aneignen würdest, bevor du mit Qt beginnst..
hth
http://doc.qt.nokia.com/latest/designer ... -file.html
Weil du nicht schreibst, welche Variante du genommen hast (Direct, Single Inh., oder Multi Inh.) können wir dir auch nicht den genauen Syntax mitteilen..
Kleiner Hinweis noch: Egal ob du selbst ein Pointer deklarierst oder ob du den Pointer einer UI-Klasse nimmst: es ist ein Pointer und du brauchst daher auch die Pointer-Schreibweise:
Code: Alles auswählen
mMeineBox->hide();
Aber wie Christian schon gesagt hat: das sind C++-Grundlagen.. es wäre besser wenn du die dir aneignen würdest, bevor du mit Qt beginnst..
hth