2010-09-13 43 views
4

Comment puis-je convertir ma police sur un QGraphicsObject d'une taille de point à une taille de pixel? Je dois faire ceci pour que les polices aient l'air correctes lorsque j'imprime mon QGraphicsScene en utilisant QGraphicsScene::render().comment calculer la taille de pixel qfont à partir de la taille de point

+0

Que recherchez-vous dans le résultat final? Pourquoi l'appel 'render()' par défaut ne fonctionne-t-il pas pour vous? –

+0

Je veux que la scène soit imprimée sur papier et qu'elle ressemble à l'écran. Le rendu par défaut produit des résultats corrects pour tout sauf le texte. Mes polices sont spécifiées en points, et la valeur par défaut 'render()', quand je la passe, un 'QPainter' créé à partir de mon' QPrinter', rend la police énorme. Voici ma question originale: http://stackoverflow.com/questions/3679837/how-to-print-a-qgraphicsscene-that-has-text-and-graphics –

Répondre

7

La classe QFontMetrics fera probablement l'affaire. Il suffit de créer votre QFont désiré, définissez la taille du point. Puis créez l'objet QFontMetrics sur votre QFont.

+0

Je n'arrive pas à comprendre comment utiliser QFontMetrics ce. J'ai aussi regardé QFontInfo, qui me donne la taille de pixel actuelle, mais je ne suis pas sûr de savoir quoi en faire. Jusqu'à présent, font.setPixelSize (font.pointSize()) semble fonctionner, mais je ne sais pas pourquoi - ne semble pas être fiable. Pensées? –

+0

font.setPointSize (yourPointSize); QFontMetrics fm (police); fm.height() <- cela vous donnera la hauteur de police en pixels. La taille des points dépend du DPI. Donc, probablement à votre dpi 1px est proche de la taille de 1 point. –