Wechsel von versch QWidgets mittels QPushButton
-
Hallo,
ich habe mal wieder ein kleines problem, bei dem ich dringend Hilfe benötige. Ich habe ein QWidget, welches wiederrum mehrere QLabels etc. enthält. Von diesen übergeordneten QWidgets gibt es mehrere, die sich nur in dem Inhalt, also den QLabels etc. unterscheiden. Von der Größe und Aussehen sind sie identisch. In jedem Widget soll es zwei Buttons "vor" und "zurück" geben, mit denem man jeweils ein anderes Widget zur Ansicht auswählen kann.
Allerdings weiss ich ncith wie ich diese verschiedenen Ansichten hinbekommen kann. Ich bion schon auf QStackedWidget gestoßen, und habe versucht die Widgets in einem großen, übergeordneten unterzubringen, welches dann auch die Buttoons enthält.connect(nextButton, SIGNAL(clicked()), stackedLayout, SLOT(setCurrentWidget(entsprechendes Widget)));
Allerdings bekomme ich immer folgende Fehlermeldung:
Object::connect: No such slot QStackedLayout::slotSetCurrentWidget()
ich hoffe ich hab nicht allzu verwirrend geschrieben und es wurde ungefähr klar wo mein problem liegt. Vielleicht hat ja jemand eine kleinen Tipp.
MfG
-
Wenn du das nicht mit dem QStackedWidget machen möchtest, kann es so gehen:
Du erzeugst alle übereinanderliegenden Widgets und legst Zeiger auf diese in ein Array. Alle sind gehidden bis auf das erste. Zusätzlich merkst du dir den index des aktuell sichtbaren Widgets. Klickt ein Benutzer nun auf einen der Buttons versteckst du das aktuelle Widget, änderst den Index, zeigst das neue Widget und aktivierst/deaktivierst die Buttons wenn du am Rand/nicht mehr am Rand bist.
Ansonsten heisst das Ding doch: setCurrentWidget()
-
Spitty schrieb:
connect(nextButton, SIGNAL(clicked()), stackedLayout, SLOT(setCurrentWidget(entsprechendes Widget)));
Das Signal clicked() hat andere Parameter als der Slot setCurrentWidget(QWidget oder int). Dh, dass das gar nicht funktionieren kann. Du musst das Signal von next button mit einem eigenen Slot verbinden. In diesem Slot berechnest du dann den naechsten Index (den alten abspeichern oder vom StackedW erfragen).
So wie es Ponto sagt, gehts natuerlich auch..