Le rendu et le positionnement des textes statiques sont desormais identiques entre l'editeur d'element et l'editeur de schemas.

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/branches/0.3@746 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
xavier
2009-09-01 20:56:47 +00:00
parent a9afeadad5
commit 4607e8ff75

View File

@@ -548,8 +548,35 @@ bool CustomElement::parseText(QDomElement &e, QPainter &qp) {
qp.save();
setPainterStyle(e, qp);
qp.setFont(QETApp::diagramTextsFont(size));
qp.drawText(QPointF(pos_x, pos_y), e.attribute("text"));
// determine la police a utiliser et en recupere les metriques associees
QFont used_font = QETApp::diagramTextsFont(size);
QFontMetrics qfm(used_font);
// instancie un QTextDocument (comme la classe QGraphicsTextItem) pour
// generer le rendu graphique du texte
QTextDocument text_document;
text_document.setPlainText(e.attribute("text"));
/*
deplace le systeme de coordonnees du QPainter pour effectuer le rendu au
bon endroit ; note : on soustrait l'ascent() de la police pour
determiner le coin superieur gauche du texte alors que la position
indiquee correspond a la baseline QPointF
*/
QPointF qpainter_offset(pos_x, pos_y - qfm.ascent());
// ajuste le decalage selon la marge du document texte
#if QT_VERSION >= 0x040500
text_document.setDocumentMargin(0.0);
#else
// il semblerait qu'avant Qt 4.5, le documentMargin vaille 2.0 (et pas 4.0)
qpainter_offset.ry() -= 2.0;
#endif
qp.translate(qpainter_offset);
text_document.drawContents(&qp);
qp.restore();
return(true);
}