chengxr 1 year ago
parent
commit
b4cad78dac
3 changed files with 19 additions and 2 deletions
  1. 14 1
      QFD/CCanvas/CNodeItem.cpp
  2. 3 1
      QFD/CCanvas/CTextItem.cpp
  3. 2 0
      QFD/CCanvas/CTextItem.h

+ 14 - 1
QFD/CCanvas/CNodeItem.cpp

@@ -13,7 +13,6 @@ CNodeItem::CNodeItem(const CNodeData data, CNodeItem *parent) : QObject(parent),
 {
     m_rectItem = new CRectItem();
     m_textItem = new CTextItem(data.name, m_rectItem);
-    m_textItem->document()->setDocumentMargin(20);
     m_lineItem = new CLineItem(m_rectItem);
     updateItemsGeometry();
     connectSignalsAndSlots();
@@ -211,11 +210,18 @@ int CNodeItem::sizeOfLevel(int lev) const
 
 qreal CNodeItem::textWidth() const
 {
+    //    qreal w = CTextItem::textSize(data().name).width();
+    //    w       = std::min(w, maxWidth());
+    //    w       = std::max(w, minWidth());
+    //    return w;
+
     return m_textItem->boundingRect().width();
 }
 
 qreal CNodeItem::textHeight() const
 {
+    //    qreal h = CTextItem::textSize(data().name, textWidth()).height();
+    //    return h;
     return m_textItem->boundingRect().height();
 }
 
@@ -312,5 +318,12 @@ void CNodeItem::slotRemove()
 
 void CNodeItem::slotTextChanged()
 {
+    //    qDebug() << __FUNCTION__ << __LINE__ << m_textItem->toPlainText() << endl;
+    //    qreal w = CTextItem::textSize(m_textItem->toPlainText()).width();
+    //    w       = std::min(w, maxWidth());
+    //    w       = std::max(w, minWidth());
+    //    m_textItem->setTextWidth(w);
+
+    data().name = m_textItem->toPlainText();
     emit sigTextChanged();
 }

+ 3 - 1
QFD/CCanvas/CTextItem.cpp

@@ -65,14 +65,16 @@ void CTextItem::setAllowEdit(bool a)
     endEditing();
 }
 
-QSizeF CTextItem::textSize(const QString t)
+QSizeF CTextItem::textSize(const QString t, qreal width)
 {
+    qDebug() << __FUNCTION__ << __LINE__ << endl;
     static CTextItem *i = nullptr;
     if (i == nullptr) {
         i = new CTextItem(nullptr);
     }
 
     i->document()->setPlainText(t);
+    i->setTextWidth(width);
 
     return i->document()->size();
 }

+ 2 - 0
QFD/CCanvas/CTextItem.h

@@ -25,6 +25,8 @@ public:
 
     void setAllowEdit(bool a);
 
+    static QSizeF textSize(const QString t, qreal width = -1);
+
 signals:
     void sigTextChanged();