Ich lerne auch QT und QT Designer, und stieß auf das gleiche Problem. Eine entschlossene Suche im Internet ergab mehrere andere Leute mit der gleichen Frage und keine Antworten. Du würdest denken, dass jemand da draußen es erklärt hätte. Seufzer.
Wie auch immer, das Problem ist, dass die von den Drucktasten gesendeten Signale nicht mit der Signatur des "setCurrentIndex (int)" - Slots auf dem stacked-widget übereinstimmen, daher wird "setCurrentIndex (int)" nicht angezeigt im Menü, wenn man versucht, ein "clicked()" - Signal zu verwenden. Das heißt, "clicked()" hat keine Parameter und "setCurrentIndex (int)" hat einen einzelnen Integer-Parameter, daher haben sie unterschiedliche Signaturen.
In meinem Projekt habe ich versucht, Menüelemente mit einem gestapelten Widget zu verbinden, so dass eines der enthaltenen Widgets angezeigt würde, wenn das Menüelement ausgewählt wurde. Die Menüeinträge haben nur das Signal "getriggert()", es gibt kein Signal "getriggert (int)", und der Slot "setCurrentIndex (int)" von QStackedWidget erwartet ein Signal mit einem einzelnen ganzzahligen Parameter in seiner Signatur.
Mit anderen Worten, Sie können nicht tun, was Sie wollen, direkt.
So habe ich es in meinem Code gelöst. Denken Sie daran, dass ich meine Qt-App in C# schreibe, mit MonoDevelop (um C# -Entwicklung unter Linux zu machen) und Qyoto (welches eine C# -Schnittstelle zu Qt ist).
Nach meinem Hauptfenster zu schaffen (und es auf eine Variable namens „Layout“ assiging), habe ich dies:
QObject.Connect (layout.someMenuItem, SIGNAL("triggered()"), showSomeView);
Das ist mein Menüpunkt bewirkt, dass der showSomeView() Funktion aufrufen, wenn es ausgelöst wird.
Ich schrieb dann
public void showSomeView()
{
layout.stackedWidget.SetCurrentWidget(layout.someView);
}
jetzt ist es, was ich meine!
Die Lösung in der Sprache Ihres Projekts sollte dieser ähneln. Es ist bedauerlich, dass die Signal/Slot-Verbindungen in Code eingerichtet werden müssen, anstatt in der GUI von QT Designer, aber ich weiß nicht, wie ich das sonst machen soll.
Ich sehe keinen Screenshot. – problemofficer