2009-10-05 20 views
25

Qual è il processo alla base della creazione di widget personalizzati (utilizzando Qt) che non sembrano ... beh ... brutti?Creazione di widget Qt personalizzati "belli"

So che è abbastanza banale per fare un "widget personalizzato" che ha detto, una casella di riepilogo e un pulsante schiaffeggiato insieme in un unico, ma come potrei fare per fare qualcosa che assomiglia di più a questo:

QAnalogWidgets

Ho creato alcuni mock-up approssimativi che fondamentalmente usano uno sfondo PNG (che ho realizzato in Photoshop) con elementi di base come QLabels posizionati sopra, ma non penso che sia così che dovrei farlo . So che Qt supporta i CSS - è questo che la gente usa per creare widget che sembrano davvero buoni? Devo lavorare con i metodi paintEvent? OpenGL?

Cercare di cercare qualsiasi cosa "qt del widget personalizzato" mi dà solo un sacco di informazioni su come importarli nel Designer, ecc.

Grazie!

risposta

28

Ci sono fondamentalmente tre cose diverse da provare, nell'ordine indicato:

  1. CSS/stylesheets. I fogli di stile, quando sufficientemente potenti per le tue esigenze, sono grandiosi e consentono modifiche allo stile di runtime. Vedi lo stylesheet examples.
  2. Custom painting. Puoi fare praticamente tutto ciò che vuoi con la verniciatura personalizzata. Il supporto di Qt per PNG e SVG dovrebbe essere di grande aiuto. Ti consigliamo di dare un'occhiata allo painting examples. Inoltre, dai un'occhiata alla documentazione QStyle per capire quali tipi di informazioni di stile dovresti prendere in considerazione.
  3. Custom styles. Se è necessario personalizzare l'intera applicazione, è meglio creare il proprio stile. Non per i deboli di cuore.

Fondamentalmente, andare con la soluzione più semplice possibile che funzionerà per voi. Inoltre, dai uno sguardo allo Qt Creator, è ben disegnato e tutto lo source code è disponibile.

+0

grazie, ho fatto un po 'di pittura personalizzata in Java Swing, quindi darò un'occhiata – swanson

10

Ecco un tutorial per creare finestre personalizzate rimuovendo la barra superiore del sistema e disegnando il bacground: http://qt.developpez.com/tutoriels/braindeadbzh/customwindow/.

Poiché esegue la sottoclassificazione di un QWidget, è possibile farlo per tutte le sottoclassi QWidget come QPushButton).

Quando si desidera utilizzarli in QTDesigner, è sufficiente includere la classe e quindi promuovere un widget "classico" su quello personalizzato. Ciò può essere utile: http://pepper.troll.no/s60prereleases/doc/designer-using-custom-widgets.html.

+3

grazie, sembra promettente ... se solo io parlo francese: D ma il codice è in inglese, quindi lo controllerò! – swanson

+0

Ci scusiamo per il francese ... So che questo tutorial esiste in inglese (dato che è una traduzione) ma ho solo il segnalibro quello francese. –