Sto creando alcuni dati grafici che mostrano widget nel Qt4 e ho avuto la tentazione di usare il QGraphicsScene
per esso, creare QGraphicsItem
s per gli elementi dei dati, eccCome devo usare un QGraphicsScene con layout e widget
Tuttavia, Volevo aggiungere alcuni livelli di controlli (ad esempio barre di scorrimento, zoom + altri pulsanti - Voglio farlo in uno stile simile ad esempio. Google Maps, cioè i dati verrebbero visualizzati in tutto il widget, e i pulsanti sarebbero essere mostrato in cima a loro) al widget. Quindi ho pensato che fosse possibile aggiungerli alla scena (forse come un bambino di uno QGraphicsGroupItem
che verrebbe mostrato sui dati). Ma voglio che si spostino a & ridimensionando quando ridimensiono l'intero widget, quindi dovrei usare un QGraphicsLayout
per gestirli. Ma a questo punto, ho scoperto che le cose sono piuttosto complicate.
Il problema è che quando si utilizza QGraphicsLayout
, i seguenti vincoli tengono:
- Solo un
QGraphicsWidget
può essere gestito da un layout QGraphicsLayout
può essere utilizzato solo per gestire figli di unQGraphicsWidget
Ciò significa che dovrei creare i miei controlli come QGraphicsWidget
s, aggiungere un livello superiore QGraphicsWidget
al widget di dati e gestire t lui stesso la dimensione di questo widget di primo livello.
Quindi voglio chiedere:
sarebbe non un approccio classico (vale a dire utilizzare vecchie widget semplici per tutti i controlli, e utilizzare
QGraphicsScene
solo per la visualizzazione dei dati.) Essere più ragionevole?C'è qualche vantaggio nell'uso di
QGraphicsScene
in questo caso (prestazioni o semplicità ...)?Come utilizzare
QGraphicsScene
per sfruttare i suoi punti di forza?
Il problema più grande con QGraphicsScene è che non è in realtà un widget. È qualcosa come una collezione di elementi (come rettangoli, ellissi ...) che sono disegnati automaticamente, possono essere ingranditi, ecc. Quello che descrivi è il classico, semplice vecchio modo di widget, e probabilmente mi limiterò a questo.Volevo usare la funzionalità "lucida e nuova", ma al secondo pensiero, non mi sembra così brillante, tranne che qualcuno mi dimostra che è sbagliato :) – jpalecek
jpalecek: controlla la demo del widget "orologi" @ http: // www.qtsoftware.com/developer/pimp-my-widgets-developer-contest .. Non c'è niente di speciale nell'avere un widget di clock, ma l'implementazione è fatta con QGraphics (Scene | Widget | View | Item). – rasjani
@jpalecek: Non pensavo che un QGraphicsScene fosse un widget, motivo per cui ho detto di ereditare "in un modo o nell'altro". Ma tu hai un QGraphicsView (o qualcosa di simile), giusto? Probabilmente vuoi mettere i tuoi widget su questo, a meno che tu non voglia che si trasformino con la tua scena. Penso che in questo caso il semplice vecchio modo widget sia più semplice e diretto. –