Wie zu erkennen, wenn der aktuelle tab ändert sich in ein QTabWidget?

Ich bin mit einem QTabWidget und ich brauche einen Weg, um behandeln Sie die Veränderung der aktuellen Registerkarte, bevor es tatsächlich geschieht, und möglicherweise Abbrechen, wenn bestimmte Bedingungen erfüllt sind. Die QTabWidget::currentChanged signal empfangen wird, nachdem die aktuelle Registerkarte geändert hat, aber gibt es eine QTabWidget::currentChanging signal oder auf andere Weise zu erreichen, das Verhalten, die ich brauche?

  • Ich glaube nicht, dass es ist so ein Haken...Sie müsste manuell zurück drehen. Aber das klingt nicht wie eine sehr gute Benutzer-Schnittstelle Auswahl. Warum würden Sie nicht machen, die Register-enablement state spiegeln seine Verfügbarkeit, anstatt zu versuchen, "ablehnen" ein, klicken Sie auf eine gültig aussehende Reiter? doc.qt.nokia.com/latest/qtabwidget.html#setTabEnabled
  • Wäre es möglich, Unterklasse QTabWidget? Ich habe nicht getan, keine Forschung auf die Sache; es ist nur eine Idee.
  • Wir hatten genau dieses problem und wählten schließlich zum schreiben eines benutzerdefinierten TabWidget von Grund auf, das erzeugt ein rund-um-Wandel-signal und erlaubt Objekte zu veto gegen die vorgeschlagenen änderungen. Nachdem das gesagt ist, ich würde gewählt haben, verwenden Sie die Methode vorgeschlagen von @HostileFork wenn hatte, wurden eine option.
  • Jede andere Lösung, lässt den Benutzer das Gefühl, Sie sind in Kontrolle ist besser als eine, wo es fühlt sich an wie es ist, kaputt oder nicht zu handeln, wie Sie erwarten würden. Eine andere Wahl wäre, dass anstelle von spiegeln zurück und "rückgängig machen" Ihre scheinbar legitimen Registerkarte klicken, könnte man so etwas wie eine QStackedWidget auf die Registerkarte Ziel. Könnte es standardmäßig ein widget haben, in ihm, der sagte: "nichts zu sehen hier, es sei denn, Sie gehen zurück zu den anderen tabs". Aber wenn die Prüfungen bestanden, wäre es für die "echten" Registerkarte Inhalt. doc.qt.nokia.com/latest/qstackedwidget.html#details
  • Ich habe erfolgreich ein solches Verhalten durch Erben QTabWidget. Da ich keinen Zugriff auf den code, werde ich warten, bis ich nach Hause gehen, um nach meinen code, wenn es von irgendeinem Interesse.
  • Nur als eine einfache Idee, warum nicht deaktivieren, Registerkarten ändern, wenn die Bedingung erfüllt ist? Lassen Sie sich nicht der Benutzer ändern von Tabulatoren an alle.
  • Könnten Sie die Antwort mit der Lösung? danke!

InformationsquelleAutor user360607 | 2011-11-29
Schreibe einen Kommentar