From 7353ce37ba20a97f112d912e6f0267e2f35eb322 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B5=D0=BB=D0=B8=D0=BF=D0=B5=D0=BD=D0=BA=D0=BE=20?= =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Sat, 21 Oct 2017 20:42:32 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/libs@303 a8b55f48-bf90-11e4-a774-851b48703e85 --- qad/blockview/alignedtextitem.cpp | 17 +++++++++++++++++ qad/blockview/alignedtextitem.h | 7 +++++-- qad/blockview/blockitem.cpp | 9 +++++++++ 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/qad/blockview/alignedtextitem.cpp b/qad/blockview/alignedtextitem.cpp index ee7f2b8..5c6107c 100644 --- a/qad/blockview/alignedtextitem.cpp +++ b/qad/blockview/alignedtextitem.cpp @@ -1,4 +1,5 @@ #include "alignedtextitem.h" +#include #include #include @@ -6,6 +7,7 @@ AlignedTextItem::AlignedTextItem(QGraphicsItem * parent): QGraphicsItem(parent), text_(this) { align_ = Qt::AlignTop | Qt::AlignHCenter; text_.setData(1003, true); + setFont(font()); _move(); } @@ -13,9 +15,24 @@ AlignedTextItem::AlignedTextItem(QGraphicsItem * parent): QGraphicsItem(parent), AlignedTextItem::AlignedTextItem(const QString & text, QGraphicsItem * parent): QGraphicsItem(parent), text_(this) { align_ = Qt::AlignTop | Qt::AlignHCenter; text_.setData(1003, true); + setFont(font()); setText(text); } +void AlignedTextItem::setFont(const QFont & f) { + font_ = f; + text_.setFont(sceneFont(f)); + _move(); +} + + +QFont AlignedTextItem::sceneFont(const QFont & f) { + QFont ret = f; + double scl = 16. / QApplication::fontMetrics().size(0, "0").height(); + ret.setPointSizeF(ret.pointSizeF() * scl); + return ret; +} + QPointF AlignedTextItem::_point(Qt::Alignment a) const { QRectF br = text_.boundingRect(); diff --git a/qad/blockview/alignedtextitem.h b/qad/blockview/alignedtextitem.h index 89519e0..b0df285 100644 --- a/qad/blockview/alignedtextitem.h +++ b/qad/blockview/alignedtextitem.h @@ -13,13 +13,13 @@ public: AlignedTextItem(const QString & text, QGraphicsItem * parent = 0); void setText(const QString & t) {text_.setText(t); _move();} - void setFont(const QFont & f) {text_.setFont(f); _move();} + void setFont(const QFont & f); void setPen(const QPen & p) {text_.setPen(p); _move();} void setBrush(const QBrush & b) {text_.setBrush(b); _move();} void setAlignment(Qt::Alignment align) {align_ = align; _move();} QString text() const {return text_.text();} - QFont font() const {return text_.font();} + QFont font() const {return /*text_.font()*/font_;} QPen pen() const {return text_.pen();} QBrush brush() const {return text_.brush();} Qt::Alignment alignment() const {return align_;} @@ -27,6 +27,8 @@ public: void clear() {setText(QString());} enum {Type = UserType + 0x100}; + + static QFont sceneFont(const QFont & f); protected: virtual QRectF boundingRect() const {return text_.boundingRect().translated(text_.pos());} @@ -38,6 +40,7 @@ protected: QGraphicsSimpleTextItem text_; Qt::Alignment align_; + QFont font_; }; diff --git a/qad/blockview/blockitem.cpp b/qad/blockview/blockitem.cpp index eb7de4b..474559f 100644 --- a/qad/blockview/blockitem.cpp +++ b/qad/blockview/blockitem.cpp @@ -1,4 +1,5 @@ #include "blockitem.h" +#include @@ -30,6 +31,7 @@ void BlockItemPin::resizePin(double r) { void BlockItemPin::_init(bool affect_parent) { + text_item.setFont(AlignedTextItem::sceneFont(QApplication::font())); QRectF tbr = text_item.boundingRect(); const double r = 7.; ell_item.setRect(-r, -r, r+r, r+r); @@ -54,6 +56,13 @@ void BlockItemPin::_reparent() { if (qgraphicsitem_cast(parentItem()) == 0) return; QPen p = qgraphicsitem_cast(parentItem())->g_main.pen(); ell_item.setPen(p); + if (scene()) { + text_item.setFont(AlignedTextItem::sceneFont(scene()->font())); + QRectF tbr = text_item.boundingRect(); + text_item.resetTransform(); + text_item.setPos(0, -tbr.height() / 2.); + text_item.setTransformOriginPoint(0, tbr.height() / 2.); + } }