Bonjour,
j'ai dérivé un QPushButton pour obtenir des icônes alignées à gauche et un texte centré ou aligné à droite ou à gauche avec un resize automatique à la construction et évidemment la possibilité de donner les QSize à la main.
J'ai voulu utiliser soit les valeurs remplies dans le Designer, soit les propriétés utilisées directement dans le code.
Voici le résultat sous l'émulateur d'iOS et sous Mac OS
Et voici (une partie de) mes doutes :
- D'abord parlons des styles : Je n'ai pas compris les mécanismes de dessin des QPushButtons. Entouré en rouge un QPushButton qui n'a pas la taille "d'origine". Son style est différent de celui d'à côté. Pourquoi ?
C'est la technique que j'utilise dans mes propres boutons en Lazarus et celle d'ailleurs qu'utilise également Windev autant que je me souvienne. Alors pourquoi est-ce que cela fonctionne pour un bouton avec sa taille par défaut et que cela ne fonctionne pas dès que la hauteur n'est pas celle par défaut ? J'ai manqué quoi ?border-image Border Image The image used to fill the border. The image is cut into nine parts and stretched appropriately if necessary. See Border Image for details.
This property is supported by QAbstractItemView subclasses, QAbstractSpinBox subclasses, QCheckBox, QComboBox, QFrame, QGroupBox, QLabel, QLineEdit, QMenu, QMenuBar, QPushButton, QRadioButton, QSplitter, QTextEdit and QToolTip.
See also border-color, border-style, border-width, and The Box Model.- En iOS, je n'ai pas travaillé en QML mais avec la même approche que le code Desktop. C'est le même. Le moins qu'on puisse dire, c'est que le dessin natif n'est pas là. Or en QML, je suis totalement incapable de dériver par une approche semblable.
- A ma grande surprise, un QPushButton::icon().name n'est pas renseigné quand on déclare le fichier d'une ressource dans le designer. C'est très mal foutu même si c'est facilement contournable.
- Toujours à ma grande surprise, lors du clic (gauche) sur un QPushButton, le text()->foregroundRole() correspond au QPalette::BrightText (blanc) et non au QPalette::HighlightedText (un bleu pâle).
- Enfin dans les propriétés du QPushButton le Qt::Alignment de son texte ne peut pas être défini autrement que par le StyleSheet. Cette propriété me manque et donc je voudrais l'ajouter dans un composant utilisable dans le Designer. Sous Ubuntu et mac OS, je sais faire mais sous Windows, je n'y arrive pas. Evidemment la version de Mingw avec laquelle est compilée Qt Creator n'est pas celle que j'utilise pour compiler en static et c'est la galère... d'ailleurs je ne comprends pas pourquoi.
Les principaux problèmes sont les points 1 et 2. Le premier est pour l'instant totalement incompréhensible pour moi. Le second m'inquiète beaucoup également. Si je suis obligé d'utiliser le QML pour développer en Mobile, l'intérêt de Qt est limité. Il n'est pas question que je l'utilise pour développer en Desktop ! Je dois avouer que lorsque j'utilise FireMonkey ou Windev Mobile, les composants s'intègrent mieux dans le "design" des OS.
Merci pour vos conseils et vos retours d'expérience. Cordialement. Gilles
PS : un truc énervant. Une nouvelle mise à jour de xCode est sortie il y a quelques jours. A partir de son installation, il m' a été incapable de compiler statiquement. J'ai dû recompiler intégralement l'environnement pour que cela fonctionne à nouveau (un problème de cstring était signalé).
Partager