2015-10-07 1 views
1

Certains messages (à savoir, ces deux: Set CSS in QPushButton's subclass's constructor et Does the use of styleSheets in a dynamic manner add a lot of computation) suggèrent que je devrais utiliser un seul fichier qss pour mon application Qt.Dois-je vraiment utiliser un seul fichier qss pour mon application au lieu d'en avoir un pour chaque classe (UI)?

Cependant, imaginons que j'ai une sous-classe QLabel dont le but est (en utilisant des feuilles de style) de fournir un look/comportement particulier (disons BlinkingLabel, quelle que soit l'horreur que cela donnerait). Dans ce cas, cela n'a-t-il pas de sens de préparer une feuille de style séparée et de la charger dans le constructeur de la classe? L'utilisation d'un fichier global n'empêcherait-elle pas l'utilisation de la POO pour les composants de l'interface utilisateur? Parce que si je le fais, je ne peux plus simplement prendre la classe et la mettre dans un autre projet sans me soucier de rien, parce qu'elle peut prendre soin de lui-même; Je dois me rappeler de copier les entrées de feuille de style pertinentes.

Répondre

1

réponse commune: ça dépend ...

De mon point de vue, si vous divisez vos qss à plusieurs fichiers et mettre en œuvre une bonne logique pour les charger correctement - il sera meilleure solution à comparer avec un seul fichier. En option supplémentaire, vous pouvez toujours avoir un qss global avec des styles de base.

Première raison pour laquelle la séparation est meilleure: votre qss sera plus lisible et il me sera plus facile de fournir un support. Deuxièmement: les petits fichiers qss, appliqués sur différents widgets, fonctionnent un peu plus rapidement.

P.S. Si vous devez recharger qss sur un widget (comme décrit dans vos liens), vous devez appeler le polish() + unpolish() au lieu de réinitialiser le texte qss.

P.P.S. n'utilisez pas de feuilles de style pour les animations. Il existe une classe QPropertyAnimation. Vous pouvez l'utiliser pour animer la couleur, la police, etc. sur votre widget.

+0

Merci pour votre contribution :) Je n'écris pas une classe d'étiquettes clignotante, ce serait cruel, juste utilisé comme un exemple. Je penche pour l'approche du partage et je voulais entendre quelques réflexions sur les raisons pour lesquelles cela pourrait être meilleur (comme le vôtre). – szczurcio