[qet] [744] Amelioration du positionnement des textes dans l'editeur |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/qet Archives
]
Revision: 744
Author: xavier
Date: 2009-08-26 01:31:31 +0200 (Wed, 26 Aug 2009)
Log Message:
-----------
Amelioration du positionnement des textes dans l'editeur
Harmonisation des boundingRect des classes PartText{Field,}
Modified Paths:
--------------
branches/0.3/sources/editor/parttext.cpp
branches/0.3/sources/editor/parttextfield.cpp
Modified: branches/0.3/sources/editor/parttext.cpp
===================================================================
--- branches/0.3/sources/editor/parttext.cpp 2009-08-25 23:25:28 UTC (rev 743)
+++ branches/0.3/sources/editor/parttext.cpp 2009-08-25 23:31:31 UTC (rev 744)
@@ -31,6 +31,7 @@
QGraphicsTextItem(parent, scene),
CustomElementPart(editor)
{
+ document() -> setDocumentMargin(1.0);
setDefaultTextColor(Qt::black);
setFont(QETApp::diagramTextsFont());
setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
@@ -69,8 +70,8 @@
*/
const QDomElement PartText::toXml(QDomDocument &xml_document) const {
QDomElement xml_element = xml_document.createElement("text");
- xml_element.setAttribute("x", QString("%1").arg((scenePos() + margin()).x()));
- xml_element.setAttribute("y", QString("%1").arg((scenePos() + margin()).y()));
+ xml_element.setAttribute("x", QString("%1").arg(pos().x()));
+ xml_element.setAttribute("y", QString("%1").arg(pos().y()));
xml_element.setAttribute("text", toPlainText());
xml_element.setAttribute("size", font().pointSize());
return(xml_element);
@@ -84,8 +85,8 @@
}
/**
- Retourne la position du texte, l'origine etant le point en bas a gauche du
- texte (et pas du cadre)
+ Retourne la position du texte, l'origine etant le point a gauche du texte,
+ sur la baseline de la premiere ligne
@return la position du texte
*/
QPointF PartText::pos() const {
@@ -116,8 +117,10 @@
QFont used_font = font();
QFontMetrics qfm(used_font);
QPointF margin(
- (boundingRect().width () - qfm.width(toPlainText())) / 2.0,
- ((boundingRect().height() - used_font.pointSizeF()) / 3.0) + used_font.pointSizeF()
+ // marge autour du texte
+ document() -> documentMargin(),
+ // marge au-dessus du texte + distance entre le plafond du texte et la baseline
+ document() -> documentMargin() + qfm.ascent()
);
return(margin);
}
@@ -228,7 +231,7 @@
*/
QRectF PartText::boundingRect() const {
QRectF r = QGraphicsTextItem::boundingRect();
- r.adjust(0.0, -2.0, 0.0, 0.0);
+ r.adjust(0.0, -1.1, 0.0, 0.0);
return(r);
}
Modified: branches/0.3/sources/editor/parttextfield.cpp
===================================================================
--- branches/0.3/sources/editor/parttextfield.cpp 2009-08-25 23:25:28 UTC (rev 743)
+++ branches/0.3/sources/editor/parttextfield.cpp 2009-08-25 23:31:31 UTC (rev 744)
@@ -71,8 +71,8 @@
*/
const QDomElement PartTextField::toXml(QDomDocument &xml_document) const {
QDomElement xml_element = xml_document.createElement("input");
- xml_element.setAttribute("x", QString("%1").arg((scenePos() + margin()).x()));
- xml_element.setAttribute("y", QString("%1").arg((scenePos() + margin()).y()));
+ xml_element.setAttribute("x", QString("%1").arg(pos().x()));
+ xml_element.setAttribute("y", QString("%1").arg(pos().y()));
xml_element.setAttribute("text", toPlainText());
xml_element.setAttribute("size", font().pointSize());
if (follow_parent_rotations) xml_element.setAttribute("rotate", "true");
@@ -87,8 +87,8 @@
}
/**
- Retourne la position du texte, l'origine etant le point en bas a gauche du
- texte (et pas du cadre)
+ Retourne la position du texte, l'origine etant le milieu du bord gauche du
+ champ
@return la position du texte
*/
QPointF PartTextField::pos() const {
@@ -132,13 +132,7 @@
@return Les coordonnees du point situe en bas a gauche du texte.
*/
QPointF PartTextField::margin() const {
- QFont used_font = font();
- QFontMetrics qfm(used_font);
- QPointF margin(
- (boundingRect().width () - qfm.width(toPlainText())) / 2.0,
- ((boundingRect().height() - used_font.pointSizeF()) / 3.0) + used_font.pointSizeF()
- );
- return(margin);
+ return(QPointF(0.0, boundingRect().height() / 2.0));
}
/**
@@ -253,7 +247,7 @@
*/
QRectF PartTextField::boundingRect() const {
QRectF r = QGraphicsTextItem::boundingRect();
- r.adjust(0.0, -2.0, 0.0, 0.0);
+ r.adjust(0.0, -1.1, 0.0, 0.0);
return(r);
}