2009-10-05 15 views
25

¿Cuál es el proceso detrás de la fabricación de widgets personalizados (con Qt) que no se ven ... bien ... feo?Creación de widgets personalizados de Qt "bonitos"

sé que es bastante trivial para hacer un "widget personalizado" que tiene decir, un cuadro de lista y un pulsador abofeteado juntos en uno, pero ¿cómo hago para hacer algo que se parece más a esto:

QAnalogWidgets

He hecho algunas maquetas ásperas que básicamente utilizan un fondo PNG (que hice en Photoshop) con elementos básicos como QLabels colocadas encima de ellas, pero no creo que así sea como debería hacerlo . Sé que Qt es compatible con CSS. ¿Es esto lo que la gente usa para crear widgets que realmente se ven bien? ¿Debo trabajar en los métodos de paintEvent? OpenGL?

Intentar buscar algo relacionado con "widget personalizado qt" es simplemente darme toneladas de información acerca de cómo importarlos en el Diseñador, etc., por lo que cualquier cliente potencial sería apreciado.

Gracias!

Respuesta

28

Hay básicamente tres cosas diferentes para probar, en el orden indicado:

  1. CSS/stylesheets. Las hojas de estilo, cuando son lo suficientemente potentes para sus necesidades, son excelentes y permiten cambios de estilo de tiempo de ejecución. Vea el stylesheet examples.
  2. Custom painting. Puede hacer prácticamente cualquier cosa que desee con una pintura personalizada. El soporte de Qt para PNG y SVG debería ayudar mucho. Deberá echar un vistazo al painting examples. Además, consulte la documentación QStyle para comprender qué tipo de información de estilo debe considerar.
  3. Custom styles. Si necesita personalizar toda la aplicación, será mejor que cree su propio estilo. No para los débiles de corazón.

Básicamente, vaya con la solución más fácil posible que funcione para usted. Además, eche un vistazo a Qt Creator, está muy bien diseñado y todos los source code están disponibles.

+0

gracias, he hecho un poco con la pintura personalizada en Java Swing, así que le daré un vistazo – swanson

10

Aquí hay un tutorial para crear una ventana personalizada eliminando la barra superior del sistema y dibujando el fundamento: http://qt.developpez.com/tutoriels/braindeadbzh/customwindow/.

Dado que está subclasificando un QWidget, puede hacerlo para todas las subclase QWidget como QPushButton).

Cuando desee utilizarlos en QTDesigner, solo incluya su clase y luego promocione un widget "clásico" al personalizado. Esto puede ser útil: http://pepper.troll.no/s60prereleases/doc/designer-using-custom-widgets.html.

+3

gracias, parece prometedor ... si solo hablara francés: D pero el código está en inglés, así que lo verificaré! – swanson

+0

Disculpe por el francés ... Sé que este tutorial existe en inglés (ya que es una traducción) pero solo he marcado el francés. –

Cuestiones relacionadas