2010-11-23 37 views
1

En utilisant Qt 4.7.0, nous avons besoin de texte pour afficher une partie entre normal et gras. Voici ce que nous faisons:qpainterpath.addtext ignore qfont weight

Dans la méthode Paint de sous-classe de notre QGraphicsObject, nous avons un QFont que nous appelons setWeight(58) sur. Nous créons un QPainterPath et appelons sa méthode addText, en passant dans notre QFont. Nous utilisons ensuite le paramètre QPainter pour appeler drawPath, en passant dans notre QPainterPath.

Ce que nous avons trouvé, c'est que les changements de poids de 50 à 62 ne font aucune différence dans la façon dont il est peint. Avec un poids de 63 à 75, la police est en gras. Comment pouvons-nous faire fonctionner le fontWeight comme nous l'attendions?

Répondre

1

par the documentation:

Définit le poids de la police au poids, qui devrait être une valeur de la QFont :: énumération de poids.

Le W3C page on CSS font boldness a une bonne explication de la manière dont CSS le gère; la documentation Qt dit qu'elle fait quelque chose de similaire. Fondamentalement, il applique une certaine heuristique pour essayer de mapper votre valeur de poids à la version appropriée de la police (régulière, gras, lourd, etc.)

Il peut être possible (en soulignant peut-être un QPainterPath?) De créer légèrement plus épais - Les glyphes normaux d'une certaine police, mais les résultats seront presque certainement décevants. Les concepteurs de polices font beaucoup d'efforts pour faire en sorte que les polices soient belles à certains poids. Quand vous partez de cela (disons, en soulignant chaque glyphe), toute cette optimisation de conception est perdue.