| ||
auteur : Yan Verdavaine | ||
Qt permet diverses actions pour jouer avec la transparence d'une fenêtre :
* Mask : à partir d'une image binaire (QBitmap), il est possible de spécifier quelle partie est visible ou non sur la fenêtre. Cette méthode s'applique à tous les éléments d'une fenêtre top-level. Par exemple la partie d'un bouton qui se trouve dans une zone transparente, ne sera pas dessinée. Pour utiliser un mask il faut créer une QBitmap et utiliser la fonction setMask (définie par QWidget) sur la widget parente. Sur certains OS comme windows xp il est obligatoire d'enlever la décoration avec le flag Qt::FramelessWindowHint.
*opacité : permet de rendre translucide toute une fenêtre. Pour cela il faut utiliser la méthode setWindowOpacity (définie par QWidget) sur la widget parente. Cette méthode prend en paramètre une valeur réelle entre 0 (transparent) et 1 (opaque)
*TranslucentWidget : depuis la version 4.5, il est possible de spécifier que le background de la widget parente soit transparent. Il est ainsi possible de jouer avec la transparence des différents éléments et QPainter pour créer une fenêtre translucide. Contrairement aux deux autres méthodes, ceci ne s'applique qu'au background de la fenêtre parente et les éléments enfants ne sont pas modifiés. Pour utiliser cette option, il faut activer l'attribut Qt::WA_TranslucentBackground sur la widget parente : setAttribute(Qt::WA_TranslucentBackground, true); Sur certains OS comme windows xp il est obligatoire d'enlever la décoration avec le flag Qt::FramelessWindowHint.
Remarque : ces trois méthodes peuvent être utilisées en même temps
|
| |||
auteurs : Matthieu Brucher, Benjamin Poulain | |||
Par défaut, Qt utilise le style natif du système d'exploitation.
Si vous voulez modifier le style, vous pouvez le faire au niveau de chaque widget
à l'aide de QWidget::setStyle() ou au niveau de l'application complète avec
QApplication::setStyle().
Voici par exemple comment utiliser le style "Plastique" pour toute l'application:
Remarque : il est possible de créer un style par son nom avec QStyleFactory::create() ou la fonction static QApplication::setStyle ().
Créer un style complet est généralement une tâche difficile. Heureusement Qt fournit un
mécanisme simple pour personnaliser les styles: les CSS (Cascading Style Sheets).
Avec CSS pour Qt, il est possible de personnaliser le design d'une application à l'aide
d'une syntaxe simple dérivée des CSS de HTML. Cela peut se faire au niveau de designer,
ou comme pour les styles classiques, au niveau des widgets ou de l'application.
| |||
lien : ![]() lien : ![]() lien : ![]() lien : ![]() |
| ||
auteur : Benjamin Poulain | ||
Les styles disponibles dépendent de la plateforme et des plugins.
La classe QStyleFactory permet de lever toute ambiguïté en fournissant la liste des styles disponibles à l'exécutions.
La méthode statique QStyleFactory::keys retourne une liste de nom de style qu'il est possible de charger.
À partir des noms de cette liste, il est possible de charge les styles avec la méthode statique QStyleFactory::create.
Notez qu'en général il est déconseillé de changer de style car l'application perd son intégration avec le reste du système.
|
| ||
auteur : Yan Verdavaine | ||
Lorsqu'un widget doit être dessiné ou redessiné, la fonction protégée QPaintEvent est appelée. Pour se dessiner, la majorité des widgets de Qt utilise un QPainter lors de l'appel de cette fonction. Il est donc naturel de suivre cette logique.
L'évènement QPaintEvent passé en paramètre indique la zone à redessiner. Cette zone est donnée sous forme de rectangle QPaintEvent::rect ou sous forme quelconque QRegion. Ces informations peuvent être utilisées pour optimiser l'affichage du widget.
La classe QPainter est un outil qui permet de dessiner sur toutes les classes graphique de Qt :
QCustomRasterPaintDevice, QGLFramebufferObject, QGLPixelBuffer, QImage, QPicture, QPixmap, QPrinter, QSvgGenerator, et QWidget.
Cette classe utilise d'autres outils de Qt. Les plus importants à mon avis sont :
Voici un exemple :
|
| ||
auteur : Yan Verdavaine | ||
Certaines widgets sont basées sur QAbstractScrollArea dont le but est de permettre
l'affichage d'une widget plus grande que sa zone d'affichage.
En ajoutant des scrollbar par exemple. Appliquer un painter directement sur
celle-ci n'aura pas l'effet souhaité.
Cette classe implémente la méthode viewport() qui permet d'accéder à la widget
qui est réellement affichée. Il faut donc appliquer le painter sur celle-ci.
On constate ainsi trois étapes lors de la redéfinition du paintevent :
Les widgets concernées sont QAbstractItemView, QGraphicsView, QMdiArea, QPlainTextEdit, QScrollArea, QTextEdit, QTextBrowser,
QColumnView, QHeaderView, QListView, QTableView, QTreeView,QHelpContentWidget, QTreeWidget, QTableWidget,QHelpIndexWidget, QListWidget, QUndoView
Remarque: Comme le traitement pre-dessin se dessine en arrière plan, il peut être totalement effacé par le dessin originel ou le post-dessin |
| ||
auteur : Yan Verdavaine | ||
La façon la plus simple est d'utiliser un QLabel et ses possibilités de Rich text
(http://doc.trolltech.com/4.3/richtext.html). Pour cela il suffit :
exemple avec un lien text et un lien image
|
| ||
auteur : Shugo78 | ||
Qt propose la classe QSplashScreen pour simplifier la gestion des pages de démarrage.
Une page de démarrage est une image affichée lors du démarrage d'un programme,
pour masquer un démarrage lent ou tout simplement par marketing.
Remarque :
|
| ||
auteur : IrmatDen | ||
|
| ||
auteur : Yan Verdavaine | ||
Si une action longue est exécuté (ex :parcours récursif de répertoire, copie de
plusieurs fichiers,...) par l'ihm, celle ci va se geler et ne plus répondre...
Pour remédier à cela il est souvent préférable d'utiliser une thread.
Mais il existe une alternative intéressante lorsque ce traitement n'a vraiment aucun intérêt à être mis dans un thread :
QCoreApplication (et donc QApplication ) possède la méthode static processevents permettant l'exécution dune partie ou de tous les events de l'eventloop.
|
| ||
auteur : Yan Verdavaine | ||
Comme un Gif animé est quelque chose de non statique, on ne peut pas afficher l'animation avec une QImage ou une QPixmap. Pour cela, Qt fournie une classe dédiée aux vidéos : QMovie.
La méthode la plus simple est de créer un QMovie avec le gif et de l'associer à un label.
Il faut tout de même préciser que la compilation du plugin Gif est nécessaire pour
que ce code marche correctement. |
| ||||||
auteur : Yan Verdavaine | ||||||
Il peut être intéressant d'avoir des icônes qui évoluent dans le temps.
Par exemple, une icône dans la barre des tâches qui donne l'avancement d'un traitement.
Pour animer une QIcon, il suffit de remplacer l'image à utiliser à l'instant t.
Voici trois méthodes simples:
1- Un fichier image animé (gif, mng,...) et QMovie :
2- Une liste d'image :
3- Un QPainter :
|
| ||
auteur : Benjamin Poulain | ||
Il n'y a pas de liens de parenté entre ces deux là.
Au début il arrive de se tromper entre Item View et Graphics View simplement car il y a "View" dans les deux noms.
Graphics View permet de dessiner et gérer des objets 2D. Item View permet de gérer des éléments (les items), et de les représenter visuellement (en table, liste et arbre).
Rien n'empêche de combiner ces deux infrastructures, mais il vaut mieux ne pas les confondre pour lire la documentation ou pour communiquer.
|
| ||
auteur : François Jaffré | ||
Qt fournit un mécanisme de gestion de la validation et de vérification des entrées
utilisateurs dans une zone d'édition.
La classe de base est la classe QValidator dont dérive les classes QDoubleValidator,
QIntValidator, et QRegExpValidator.
L'utilisation de ces classes est très simple au moins pour ce qui est des deux premières.
Exemple d'utilisation:
On veut limiter l'entrée dans une zone d'édition de nombres entiers compris entre 0 et 100 et uniquement ce type de nombre.
Le même principe est utilisable pour contrôler par exemple une valeur double avec QDoubleValidator. Si l'on souhaite un motif spécifique par exemple une adresse IP, un numéro de téléphone ou autre il faut utiliser la classe QRegExpValidator ou créer soit même un validator à partir d'une classe dérivant de QValidator.
| ||
lien : ![]() |
| ||
auteur : François Jaffré | ||
Qt depuis sa version 4.2 permet grâce à la classe QSystemTrayIcon de créer facilement des programmes ayant une entrée dans la zone de notification. Cela se fait à l'aide des quelques méthodes suivantes :
Remarque : La méthode showMessage() (arrivée à partir de Qt 4.3) qui fait apparaitre une info bulle est dépendante des paramètres de l'OS.
| ||
lien : ![]() lien : ![]() lien : ![]() |
| ||
auteur : François Jaffré | ||
Qt permet comme tous les framworks gérant les GUI, la création de fenêtre modale (fenêtre bloquant l'accès aux autres fenêtres du programme) et amodale (fenêtre indépendante des autres fenêtres du programme).
La classe de base gérant les boites de dialogues est QDialog. Celle-ci gère le mode modale ou amodale de la fenêtre au partir des méthodes suivantes :
Remarque : Tout les QWidgets et par conséquent leurs classes dérivé peuvent être modal en modifiant leur propriétés windowModality à l'aide de la méthode setWindowModality(). Cependant il est préférable de gérer ce type de boite de dialogue à partir d'une QDialog et nom d'un QWidget.
| ||
lien : ![]() lien : ![]() |
| ||||
auteur : Louis du Verdier | ||||
Les curseurs sont très utilisés dans les classes pouvant les accueillir (comme l'autorisent par défaut QTextEdit, QTextBrowser et d'autres classes encore).
Pour retrouver la sélection courante qu'à faite l'utilisateur d'un programme, il suffit d'utiliser la fonction selectedText() de la manière qui suit :
Notes : Cette fonction, retournant un QString, peut parfaitement être vide (ou empty en anglais).
Il est de même possible de supprimer la sélection courant à l'aide de removeSelectedText() :
Note : La suppression du texte sélectionné ne se produira que s'il y a lieu d'une sélection.
L'insertion de texte avec l'assistance des curseurs s'effectue avec insertText() qui entre du texte à partir de la position du curseur.
Voici un exemple, reprenant ce qui est inscrit ci-dessus, permettant d'effectuer une modification sur un texte sélectionné sans pour autant modifier plusieurs chaines identiques :
| ||||
lien : ![]() |
| ||
auteur : François Jaffré | ||
Qt fournit dans son framework des icônes standards comme flèches, fichier, dossiers, lecteur DVD, corbeille, etc.
La récupération de ces icônes se fait à l'aide de la classe QStyle avec la méthode suivante :
Qui permet de récupérer l'icône choisi à partir de l'énumération StandardPixmap.
Exemple d'utilisation en appliquant un icone flèche sur un bouton :
| ||
lien : ![]() lien : ![]() |
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.