tworzę jakieś dane graficzne wyświetlanie widżetu w Qt4 i miałem ochotę użyć QGraphicsScene
dla niej tworzyć QGraphicsItem
s dla pozycji danych itpJak należy użyć QGraphicsScene z układów i widżetów
jednak Chciałem dodać warstwę kontrolek (np. Paski przewijania, zoom + inne przyciski - chcę zrobić to w stylu podobnym do np. Google Maps, to znaczy, że dane będą wyświetlane na całym widżecie, a przyciski będą pokaż się na nich) do widgetu. Pomyślałem więc, że może być możliwe dodanie ich do sceny (być może jako dziecko z QGraphicsGroupItem
, które byłoby pokazane nad danymi). Ale chcę, aby przesuwały się po zmianie wielkości widżetu na &, więc do zarządzania nimi powinienem użyć QGraphicsLayout
. Ale w tym momencie odkryłem, że rzeczy są dość skomplikowane.
Problemem jest to, że podczas korzystania QGraphicsLayout
następujące ograniczenia przytrzymanie:
- Tylko
QGraphicsWidget
mogą być zarządzane przez układ QGraphicsLayout
mogą być wykorzystywane wyłącznie do zarządzania dzieci oQGraphicsWidget
Co oznacza, że będę musiał utworzyć moje formanty jako QGraphicsWidget
s, dodać najwyższy poziom QGraphicsWidget
do widgetu danych i zarządzać t Rozmiar samego tego widgetu najwyższego poziomu.
Więc chcę zapytać:
Czy nie jest to klasyczne podejście (tj używać zwykłego starych widgety dla wszystkich elementów sterujących i używać
QGraphicsScene
tylko do wyświetlania danych.) Będzie bardziej rozsądne?Czy jest jakaś korzyść z używania
QGraphicsScene
w tym przypadku (wydajność lub prostota ...)?Jak wykorzystać
QGraphicsScene
, aby wykorzystać swoje mocne strony?
Największym problemem z QGraphicsScene jest to, że w rzeczywistości nie jest widget. Jest to coś w rodzaju kolekcji elementów (takich jak prostokąty, elipsy ...), które są rysowane automatycznie, mogą być powiększane itd. To, co opisujesz, to klasyczny, prosty, stary sposób wyświetlania widgetów, a ja zapewne się do tego przyzwyczaję.Chciałem użyć funkcjonalności "lśniącej i nowej", ale z drugiej strony nie wygląda mi to tak lśniąco, chyba że ktoś mi udowodni, że się mylę :) – jpalecek
jpalecek: sprawdź demo widgetu "zegary" @ http: // www.qtsoftware.com/developer/pimp-my-widgets-developer-contest .. Nic dziwnego w tym, że masz widget zegara, ale implementacja odbywa się za pomocą QGraphics (Scene | Widget | View | Item). – rasjani
@jpalecek: Nie sądziłem, że QGraphicsScene jest widgetem, dlatego powiedziałem, że dziedziczy "tak czy inaczej". Ale masz QGraphicsView (lub coś podobnego), prawda? Prawdopodobnie chcesz umieścić na nim swoje widżety, chyba że chcesz, aby zmieniały się wraz ze sceną. Myślę, że w tym przypadku zwykły, stary sposób wyświetlania jest prostszy i bardziej prosty. –