2012-06-18 18 views
15

Próbuję utworzyć składany panel boczny podobny do tego w Qt Designer (patrz załączony zrzut ekranu). Wyglądają na QListViews umieszczone w jakimś zwijanym widgecie.Czy istnieje standardowy komponent do zwijanego panelu w Qt?

enter image description here

google dla „Qt składany panel” i wydaje się, że nie ma standardowy komponent do tego, a przynajmniej nie pod tą nazwą. Czy ktokolwiek wie, czy jakikolwiek standardowy składnik Qt ma takie samo zachowanie? Jeśli nie, czy ktoś może zasugerować, w jaki sposób mogę go zbudować?

Dzięki.

+2

Czy zachowanie nie jest takie samo jak QTreeView? Pozycje na najwyższym poziomie to kategorie widżetów i elementy niższego poziomu będące samymi widgetami? Być może możesz podklasować QTreeView i dostosować wygląd elementów najwyższego poziomu i sprawić, by rozwijały się po jednym kliknięciu. – Claudio

Odpowiedz

13

Postanowiłem zastosować ogólne podejście opisane w linku dostarczonym przez Joey'a.

W szczególności utworzyłem widżet dla każdej zwijanej listy. Ten widget składa się z QPushButton na górze i QListView na dole.

Następnie, podłączyłem sygnał kliknięcia przycisku do obsługi, aby przełączać geometrię QListView między wysokością 0, gdy jest ona ukryta, a jej pierwotną wysokością, gdy ponownie się pojawi.

Uważam, że to podejście jest znacznie prostsze w porównaniu do dostosowywania zdarzenia malowania, jak sugeruje Claudio. Ponadto mogę używać QAnimationProperty do animowania zmiany geometrii, aby lista wyglądała na "przesuwanie" w widoku i poza nim.

Ale tak, dziękuję za odpowiedzi!

+2

Być może nie trzeba dostosowywać zdarzenia malowania, może to wystarczy, aby dostosować styl wyświetlania. W przypadku przedmiotów na najwyższym poziomie ustawiasz wyśrodkowane wyrównanie, różne tło i trójkątną ikonę skierowaną w dół po rozwinięciu i wyłączające dekoracje główne. Animacje są obsługiwane przez QTreeView. Zaletą jest to, że wystarczy podać model drzewa, bez względu na to, ile jest elementów najwyższego poziomu. Dzięki rozwiązaniu, jeśli dodasz kategorię, musisz zmodyfikować widżet, a także twoje produkty będą rozłożone na wiele widoków. Jeśli to nie dotyczy ciebie, twoje rozwiązanie powinno być w porządku. – Claudio

+0

Hi. Dzieki za sugestie. Przyjrzę się możliwości dostosowania QTreeView. To, co opisałeś, brzmi bardziej elastycznie. Ale w tej chwili mam tylko potrzebę wyświetlania przedmiotów na jednym poziomie. Moją główną obawą jest nadal wygląd interfejsu użytkownika. Jeśli QTreeView może wytworzyć pożądany wygląd i odczuwam, pójdę z tym. W każdym razie dziękuję za pomocną podpowiedź! – lightalchemist

+10

Czy możesz podzielić się swoim kodem? – SomethingSomething

Powiązane problemy