Gibt es in Qt eine Standardkomponente für ein reduzierbares Panel?

Ich versuche, ein reduzierbares Seitentableau ähnlich dem in Qt Designer zu erstellen (siehe beigefügten Screenshot). Sie scheinen QListViews zu sein, die in einer Art zusammenklappbarem Widget platziert sind.

enter image description here

Ich habe nach "Qt collapsible panel" gegoogelt und es scheint, dass es dafür keine Standardkomponente gibt oder zumindest nicht unter diesem Namen. Also, weiß jemand, ob eine Standard-Qt-Komponente das gleiche Verhalten hat? Wenn nicht, kann jemand vorschlagen, wie ich es bauen kann?

Vielen Dank.

15
hinzugefügt bearbeitet
Ansichten: 1
Ist das Verhalten nicht dasselbe wie bei QTreeView? Die Elemente der obersten Ebene sind die Widgets-Kategorien und die Elemente der untersten Ebene sind die Widgets selbst? Vielleicht können Sie ein QTreeView von Unterklassen ableiten und das Aussehen von Elementen der obersten Ebene anpassen und sie mit einem Klick erweitern.
hinzugefügt der Autor Claudio, Quelle

1 Antworten

Ich entschied mich, dem allgemeinen Ansatz zu folgen, der in dem von Joey bereitgestellten Link dargelegt wurde.

Speziell habe ich ein Widget für jede reduzierbare Liste erstellt. Dieses Widget besteht aus einem QPushButton oben und einer QListView am unteren Rand.

Dann verdrahtete ich das Klicksignal an einen Handler, um die Geometrie der QListView zwischen der Höhe von 0, wenn sie ausgeblendet ist, und der ursprünglichen Höhe, wenn sie wieder erscheint, umzuschalten.

Ich finde, dass dieser Ansatz viel einfacher ist, als das von Claudio vorgeschlagene Paint-Event anzupassen. Darüber hinaus kann ich QAnimationProperty verwenden, um die Änderung in der Geometrie zu animieren, damit die Liste so aussieht, als ob sie in der Ansicht "gleitet".

Aber trotzdem danke für die Antworten!

13
hinzugefügt
Können Sie Ihren Code teilen?
hinzugefügt der Autor SomethingSomething, Quelle
Hallo. Danke für den Vorschlag. Ich werde auf die Möglichkeit der Anpassung eines QTreeView eingehen. Was Sie beschrieben haben, klingt tatsächlich nach einem flexibleren Ansatz. Aber im Moment muss ich nur Elemente auf einer Ebene anzeigen. Mein Hauptanliegen ist immer noch, wie die UI aussehen wird. Wenn das QTreeView das gewünschte Aussehen und Gefühl erzeugen kann, werde ich damit gehen. Trotzdem danke für den hilfreichen Hinweis!
hinzugefügt der Autor lightalchemist, Quelle
Möglicherweise müssen Sie das Paint-Ereignis nicht anpassen, es reicht möglicherweise, den Anzeigestil anzupassen. Für Elemente der obersten Ebene legen Sie die zentrierte Ausrichtung, einen anderen Hintergrund und ein nach unten weisendes Dreiecks-Symbol fest und deaktivieren die Grunddekorationen. Animationen werden von QTreeView behandelt. Der Vorteil ist, dass Sie nur ein Baummodell bereitstellen müssen, egal wie viele Elemente der obersten Ebene es gibt. Mit Ihrer Lösung, wenn Sie eine Kategorie hinzufügen, müssen Sie Ihr Widget ändern, und auch Ihre Artikel werden in mehreren Ansichten v
hinzugefügt der Autor Claudio, Quelle