2009-10-05 7 views
25

Quel est le processus derrière la création de widgets personnalisés (utilisant Qt) qui ne semblent pas ... bien ... moche?Création de "jolis" Widgets personnalisés Qt

Je sais qu'il est assez trivial de faire un « widget personnalisé » qui a dit, une zone de liste et un bouton-poussoir giflé ensemble en un seul, mais comment pourrais-je aller de faire quelque chose qui ressemble plus à ceci:

QAnalogWidgets J'ai fait des maquettes grossières qui utilisent essentiellement un fond PNG (que j'ai fait dans Photoshop) avec des éléments de base comme QLabels placés dessus, mais je ne pense pas que c'est comme ça que je devrais le faire . Je sais que Qt prend en charge CSS - est-ce ce que les gens utilisent pour créer des widgets qui ont l'air bien? Dois-je travailler avec les méthodes paintEvent? OpenGL?

Essayer de chercher n'importe quoi "custom widget qt" lié est juste me donner des tonnes d'informations sur la façon de les importer dans le Designer, etc - donc tous les prospects seraient appréciés.

Merci!

Répondre

28

Il y a fondamentalement trois choses différentes pour essayer, dans l'ordre indiqué:

  1. CSS/stylesheets. Les feuilles de style, lorsqu'elles sont suffisamment puissantes pour vos besoins, sont excellentes et permettent des changements de style d'exécution. Voir le stylesheet examples.
  2. Custom painting. Vous pouvez faire pratiquement tout ce que vous voulez avec une peinture personnalisée. Le support de Qt pour les fichiers PNG et SVG devrait beaucoup aider. Vous voulez jeter un oeil à la painting examples. Jetez également un coup d'œil à la documentation QStyle pour comprendre quels types d'informations de style vous devriez considérer.
  3. Custom styles. Si vous avez besoin de personnaliser l'application entière, il vaut mieux créer votre propre style. Pas pour les faibles de cœur.

Fondamentalement, optez pour la solution la plus simple qui vous convient. En outre, jetez un oeil à Qt Creator, il est joliment stylé et tous les source code est disponible.

+0

merci, j'ai fait un peu de peinture personnalisée en Java Swing donc je vais donner un aperçu – swanson

10

Voici un tutoriel pour créer une fenêtre personnalisée en supprimant la barre supérieure du système et en dessinant le fichier: http://qt.developpez.com/tutoriels/braindeadbzh/customwindow/.

Puisqu'il sous-classe un QWidget, vous pouvez le faire pour toutes les sous-classes de QWidget comme QPushButton).

Lorsque vous souhaitez les utiliser dans QTDesigner, il vous suffit d'inclure votre classe, puis de promouvoir un widget "classique" dans votre widget personnalisé. Cela peut être utile: http://pepper.troll.no/s60prereleases/doc/designer-using-custom-widgets.html.

+3

merci, cela semble prometteur ... si seulement je parlais français: D mais le code est en anglais alors je vais vérifier! – swanson

+0

Désolé pour le français ... Je sais que ce tutoriel existe en anglais (puisqu'il s'agit d'une traduction) mais je n'ai que le signet français. –

Questions connexes