123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- #include "CNodeItem.h"
- #include "CRectItem.h"
- #include "CTextItem.h"
- #include <QAction>
- #include <QTextDocument>
- #include <QDebug>
- CNodeItem::CNodeItem(QObject *parent, int number, QPointF pos) : QObject(parent), m_number(number), m_pos(pos)
- {
- m_rectItem = new CRectItem();
- m_textItem = new CTextItem(m_rectItem);
- updateItemsGeometry();
- connectSignalsAndSlots();
- }
- int CNodeItem::number() const
- {
- return m_number;
- }
- void CNodeItem::setNumber(int n)
- {
- m_number = n;
- }
- QString CNodeItem::text() const
- {
- return m_textItem->toPlainText();
- }
- void CNodeItem::setText(const QString text)
- {
- m_textItem->document()->setPlainText(text);
- updateItemsGeometry();
- }
- CRectItem *CNodeItem::rectItem() const
- {
- return m_rectItem;
- }
- CTextItem *CNodeItem::textItem() const
- {
- return m_textItem;
- }
- QPointF CNodeItem::pos() const
- {
- return m_pos;
- }
- void CNodeItem::setPos(const QPointF pos)
- {
- m_pos = pos;
- updateItemsGeometry();
- }
- qreal CNodeItem::xMargin() const
- {
- return m_xMargin;
- }
- void CNodeItem::setXMargin(qreal x)
- {
- m_xMargin = x;
- updateItemsGeometry();
- }
- qreal CNodeItem::yMargin() const
- {
- return m_yMargin;
- }
- void CNodeItem::setYMargin(qreal y)
- {
- m_yMargin = y;
- updateItemsGeometry();
- }
- void CNodeItem::connectSignalsAndSlots()
- {
- connect(m_rectItem->selectAction(), &QAction::triggered, this, &CNodeItem::slotSelect);
- connect(m_rectItem->subNodeAction(), &QAction::triggered, this, &CNodeItem::slotSubNode);
- connect(m_rectItem->removeAction(), &QAction::triggered, this, &CNodeItem::slotRemove);
- }
- void CNodeItem::updateItemsGeometry()
- {
- QSizeF s = m_textItem->boundingRect().size() + QSizeF(m_xMargin * 2, m_yMargin * 2);
- m_rectItem->setRect(QRectF(m_pos, s));
- m_textItem->setPos(m_pos + QPointF(m_xMargin, m_yMargin));
- }
- void CNodeItem::slotSelect()
- {
- qDebug() << __FUNCTION__ << __LINE__ << endl;
- m_rectItem->setHighlighted(!m_rectItem->highlighted());
- }
- void CNodeItem::slotSubNode()
- {
- qDebug() << __FUNCTION__ << __LINE__ << endl;
- emit sigAddSubItem(m_number);
- }
- void CNodeItem::slotRemove()
- {
- qDebug() << __FUNCTION__ << __LINE__ << endl;
- emit sigRemoveItem(m_number);
- }
|