Question

Je vais avoir quelques questions au sujet de la fonctionnalité de feuille de style de Qt. Il est vraiment super, mais il se sent comme la caractéristique est pas là trop longtemps encore, vrai? Il est de loin la meilleure façon de le style de mon interface graphique bien.

  1. Est-il possible d'ajouter de la couleur dans la décoloration des feuilles de style? Chaque fois que les survols de la souris sur un certain widget je ne veux pas changer brusquement la couleur de fond, juste se fondre dans la nouvelle couleur à 200ms ou quelque chose. Est-il agréable pour cette façon, ou doit-il être fait code sage?

  2. Puis-je avoir un gradient 2D? Je sais comment utiliser le gradient 1D maintenant, vous pouvez changer la couleur progressivement sur un axe (souvent horizontalement ou verticalement). Je voudrais ajouter un second gradient au-dessus de qui, qui a une a une faible valeur alpha par exemple. Donc, si votre dégradé va du vert (en haut) au rouge (en bas), je voudrais aussi que pour aller de transparent (à gauche) à blanc (à droite).

  3. Qt a sélecteurs CSS pour les types (par exemple QPushButton) et pour son (par exemple #mywidgetname) ID, mais je n'ai pas trouvé un moyen de sélectionner ou de classes de jeux. J'ai un certain nombre de QFrames par exemple, et à un sous-ensemble, je voudrais ajouter un style particulier. Dois-je nommer mes cadres tout de même (même ID)? Semble mauvais. Mais la sélection de leur type (QFrame) ne va pas non plus ...

Merci!

Était-ce utile?

La solution

  1. Ne pas utiliser CSS que je connaisse. Cependant, Qt a plusieurs démos BELLES en utilisant différentes techniques (en utilisant le cadre d'animation), voir par exemple les démos / exemples navigateur.

  2. Vous pouvez probablement obtenir ce que vous voulez dans # 2 en utilisant la construction suivante à l'aide des coordonnées relatives des points d'extrémité:

    qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0.273, stop:0 rgba(0, 0, 0, 255), stop:1 rgba(255, 255, 255, 255))
    

    Qt Designer a un éditeur de gradients agréable pour (et CSS en général), vous pouvez jouer avec cela et voir ce qu'il arrive avec et utiliser pour l'inspiration.

  3. Pas tout à fait sûr de savoir comment mieux résoudre, mais vous pouvez mettre plusieurs correspondances avant la même règle, vous pouvez donc avoir:

    QFrame#frame1, QFrame#frame2 { background-color: blue; }
    

Autres conseils

Je sais que cela est tout à fait une vieille question, mais j'ai eu récemment un problème similaire.

Quoi qu'il en soit, pour "3." J'ai trouvé vous pouvez utiliser un « sélecteur de propriété » dans le QSS et juste définir la valeur de la propriété sur les widgets pertinents.

par exemple. dans votre code C ++:

widget1->setProperty( "StyleClass", "MyCustomLAF" );
widget2->setProperty( "StyleClass", "MyCustomLAF" );

puis dans le QSS:

QWidget[StyleClass="MyCustomLAF"] { color : purple ; }

Ensuite, une instance QWidget (ou classe dérivée) avec l'ensemble de la propriété « styleClass » à « MyCustomLAF » aura la couleur: le style violet appliqué. Pardonnez-moi si l'explication suivante est un peu déroutant ou techniquement incorrect, mais je suis ce qui implique que la propriété « styleClass » est ce que Qt appelle une « propriété dynamique » qui (dans mes mots) signifie une propriété qui est ajouté à une instance QObject lors de l'exécution, sans être enregistré dans les « trucs méta » en utilisant la macro Q_PROPERTY.

Vous pouvez également sélectionner tous QFrames pour parent particulier

#ParentName > QFrame sélectionnera tous les QFrames qui sont des enfants de #ParentName

#ParentName QFrame sélectionnera tous les QFrames contenus dans #ParentName et les enfants de it

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top