diff --git a/scene/PicCounterItem.cpp b/scene/PicCounterItem.cpp index 28dd71d..4017e52 100644 --- a/scene/PicCounterItem.cpp +++ b/scene/PicCounterItem.cpp @@ -20,17 +20,6 @@ PicCounterItem::PicCounterItem(QGraphicsItem *parent, QGraphicsScene *scene, con { } -QVariant PicCounterItem::source() -{ - return PicTextItem::source(); -} - -void PicCounterItem::setSource(QVariant var) -{ - PicTextItem::setSource(var); - setCounter(counterType(), digitalNum(), m_displayNum); -} - void PicCounterItem::setCounter(COUNTER_TYPE type, int digitalNum, int displayNum) { if(type != COUNTER_TYPE_1 && type != COUNTER_TYPE_2) { @@ -155,5 +144,5 @@ void PicCounterItem::saveCustomAttrs(QXmlStreamAttributes &attrs) void PicCounterItem::letterSpaceChanged() { - setSource(source()); + setCounter(counterType(), digitalNum(), m_displayNum); } diff --git a/scene/PicCounterItem.h b/scene/PicCounterItem.h index 37208f4..04efc64 100644 --- a/scene/PicCounterItem.h +++ b/scene/PicCounterItem.h @@ -10,9 +10,6 @@ class PicCounterItem : public PicTextItem public: explicit PicCounterItem(QGraphicsItem *parent = 0, QGraphicsScene *scene = 0, const SourceType type = SourceType::COUNTER); - virtual QVariant source() override; - virtual void setSource(QVariant var) override; - void setCounter(COUNTER_TYPE type, int digitalNum, int displayNum); COUNTER_TYPE counterType() const { return m_counterType; } diff --git a/scene/PicDateItem.cpp b/scene/PicDateItem.cpp index 52339b0..89950b9 100644 --- a/scene/PicDateItem.cpp +++ b/scene/PicDateItem.cpp @@ -86,30 +86,6 @@ PicDateItem::PicDateItem(QGraphicsItem *parent, QGraphicsScene *scene, const Sou // m_timer.start(); } -QVariant PicDateItem::source() -{ - return m_model.datetimePattern; -} - -void PicDateItem::setSource(QVariant var) -{ - m_model.datetimePattern = var.toString(); - if(m_model.datetimePattern.isEmpty()) - return; - - // 重新计算最长显示尺寸(以防 font()/letterSpace 改变时未重算) - m_maxDateTimeStr = generateMaxDateTimeString(m_model, font()); - if (m_maxDateTimeStr.isEmpty()) { - m_maxSize = QSize(); - } else { - QFontMetrics fm(font()); - m_maxSize = QSize(fm.horizontalAdvance(m_maxDateTimeStr), fm.height()); - } - - m_currDateTimeStr = ItemUtils::generateTxtFromDateItemModel(m_model, QDateTime::currentDateTime()); - applyModify(); -} - void PicDateItem::setModel(DateItemModel model) { m_model = std::move(model); @@ -134,7 +110,8 @@ void PicDateItem::setModel(DateItemModel model) qDebug() << "PicDateItem::setModel timing(us): generate=" << genUs << ", fm=" << fmUs << ", total=" << (genUs + fmUs); - setSource(m_model.datetimePattern); + m_currDateTimeStr = ItemUtils::generateTxtFromDateItemModel(m_model, QDateTime::currentDateTime()); + applyModify(); } const DateItemModel& PicDateItem::model() const diff --git a/scene/PicDateItem.h b/scene/PicDateItem.h index a5d5cad..f73804b 100644 --- a/scene/PicDateItem.h +++ b/scene/PicDateItem.h @@ -13,9 +13,6 @@ public: PicDateItem(QGraphicsItem *parent = 0, QGraphicsScene *scene = 0, const SourceType type = SourceType::DATETIME); virtual ~PicDateItem() {} - virtual QVariant source() override; - virtual void setSource(QVariant var) override; - void setModel(DateItemModel model); const DateItemModel& model() const; diff --git a/scene/PicImageItem.cpp b/scene/PicImageItem.cpp index a82ac4c..a5879d3 100644 --- a/scene/PicImageItem.cpp +++ b/scene/PicImageItem.cpp @@ -6,19 +6,19 @@ PicImageItem::PicImageItem(QGraphicsItem *parent, QGraphicsScene *scene, const S } -QVariant PicImageItem::source() +QString PicImageItem::imagePath() { return m_imgPath; } -void PicImageItem::setSource(QVariant var) +void PicImageItem::setImagePath(const QString& path) { - QImage img(var.toString()); + QImage img(path); if(img.isNull()) return; m_img = img; - m_imgPath = var.toString(); + m_imgPath = path; applyModify(); } @@ -29,12 +29,12 @@ QImage PicImageItem::itemImage() void PicImageItem::setCustomAttrs(const QXmlStreamAttributes &attrs) { - setSource(attrs.value("source").toString()); + setImagePath(attrs.value("source").toString()); } void PicImageItem::saveCustomAttrs(QXmlStreamAttributes &attrs) { - attrs.append("source", source().toString()); + attrs.append("source", imagePath()); } void PicImageItem::colorReversalChanged() diff --git a/scene/PicImageItem.h b/scene/PicImageItem.h index 25c34ff..494aa3d 100644 --- a/scene/PicImageItem.h +++ b/scene/PicImageItem.h @@ -9,8 +9,8 @@ class PicImageItem : public PicTextItem public: explicit PicImageItem(QGraphicsItem *parent = 0, QGraphicsScene *scene = 0, const SourceType type = SourceType::IMAGE); - virtual QVariant source() override; - virtual void setSource(QVariant var) override; + QString imagePath(); + void setImagePath(const QString& path); protected: virtual QImage itemImage() override; diff --git a/scene/PicScheduleShiftItem.cpp b/scene/PicScheduleShiftItem.cpp index 45b5516..f49953d 100644 --- a/scene/PicScheduleShiftItem.cpp +++ b/scene/PicScheduleShiftItem.cpp @@ -14,20 +14,6 @@ PicScheduleShiftItem::PicScheduleShiftItem(QGraphicsItem *parent, QGraphicsScene // m_updateTimer.start(); } -QVariant PicScheduleShiftItem::source() -{ - return QVariant(); -} - -void PicScheduleShiftItem::setSource(QVariant var) -{ - // 重新计算基于当前字体的最大名称像素宽度 - m_maxSize = calcMaxSize(); - - m_currScheduleName = findScheduleName(QTime::currentTime()); - applyModify(); -} - const QVector& PicScheduleShiftItem::schedules() const { return m_schedules; diff --git a/scene/PicScheduleShiftItem.h b/scene/PicScheduleShiftItem.h index ed3e2ea..9f9d736 100644 --- a/scene/PicScheduleShiftItem.h +++ b/scene/PicScheduleShiftItem.h @@ -24,10 +24,8 @@ class PicScheduleShiftItem : public PicTextItem public: PicScheduleShiftItem(QGraphicsItem *parent = 0, QGraphicsScene *scene = 0, const SourceType type = SourceType::SCHEDULE_SHIFT); - virtual QVariant source(); - virtual void setSource(QVariant var); - const QVector& schedules() const; + void setSchedules(QVector schedules); bool updateScheduleName(); diff --git a/scene/piccodeitem.cpp b/scene/piccodeitem.cpp index 703a961..567e11c 100644 --- a/scene/piccodeitem.cpp +++ b/scene/piccodeitem.cpp @@ -24,16 +24,6 @@ PicCodeItem::~PicCodeItem() m_dateVarTimer.stop(); } -QVariant PicCodeItem::source() -{ - return m_currCodeTxt; -} - -void PicCodeItem::setSource(QVariant var) -{ - applyModify(); -} - void PicCodeItem::setBarcodeViewModel(const BarcodeViewModel &vm) { m_vm = vm; diff --git a/scene/piccodeitem.h b/scene/piccodeitem.h index 9f3018f..0e1e5c3 100644 --- a/scene/piccodeitem.h +++ b/scene/piccodeitem.h @@ -12,9 +12,6 @@ public: const SourceType type = SourceType::CODE); virtual ~PicCodeItem(); - virtual QVariant source() override; - virtual void setSource(QVariant var) override; - void setBarcodeViewModel(const BarcodeViewModel& vm); BarcodeViewModel barcodeViewModel(); diff --git a/scene/pictextitem.cpp b/scene/pictextitem.cpp index 8a8b1dc..b6f48e0 100644 --- a/scene/pictextitem.cpp +++ b/scene/pictextitem.cpp @@ -34,11 +34,6 @@ PicTextItem::~PicTextItem() } -QVariant PicTextItem::source() -{ - return m_source; -} - QImage PicTextItem::applyImgeTranslation(QImage img) { auto scaledWidth = boldMultiple() * img.width(); @@ -92,13 +87,9 @@ QImage PicTextItem::applyImgeTranslation(QImage img) return ret; } -void PicTextItem::setSource(QVariant var) +void PicTextItem::setText(const QString& txt) { - m_source = var; - - if(SourceType::TEXT != sourceType()) - return; - + m_source = txt; m_untransImage = strToImage(m_source.toString()); applyModify(); } @@ -125,7 +116,9 @@ void PicTextItem::setCustomFont(QString name) newFont.setLetterSpacing(QFont::AbsoluteSpacing, letterSpace()); newFont.setStyleStrategy(QFont::NoAntialias); setFont(newFont); - setSource(source()); + + m_untransImage = strToImage(m_source.toString()); + applyModify(); } int PicTextItem::letterSpace() @@ -366,23 +359,24 @@ QImage PicTextItem::itemImage() void PicTextItem::setCustomAttrs(const QXmlStreamAttributes &attrs) { - auto sourceVar = attrs.value("source").toString(); - PicTextItem::setSource(sourceVar); + auto txt = attrs.value("source").toString(); + setText(txt); } void PicTextItem::saveCustomAttrs(QXmlStreamAttributes &attrs) { - attrs.append("source", PicTextItem::source().toString()); + attrs.append("source", text()); } void PicTextItem::colorReversalChanged() { - setSource(source()); + applyModify(); } void PicTextItem::letterSpaceChanged() { - setSource(source()); + m_untransImage = strToImage(m_source.toString()); + applyModify(); } QImage PicTextItem::strToImage(const QString &str) diff --git a/scene/pictextitem.h b/scene/pictextitem.h index 9900d91..4459e90 100644 --- a/scene/pictextitem.h +++ b/scene/pictextitem.h @@ -93,9 +93,6 @@ public: SourceType sourceType() const { return m_sourceType; } - virtual QVariant source(); - virtual void setSource(QVariant var); - // 粗体,即水平拉伸倍率, 1倍率为保持原样 int boldMultiple() { return m_boldMultiple; } int setBoldMultiple(int multiple); @@ -163,6 +160,12 @@ public: QPointF clampItemPos(const QPointF& p); + QString text() { + return m_source.toString(); + } + + void setText(const QString& txt); + signals: void lostFocus(PicTextItem *item); void selectedChange(QGraphicsItem *item); diff --git a/testprintwidget.cpp b/testprintwidget.cpp index ba9f7df..1edbc27 100644 --- a/testprintwidget.cpp +++ b/testprintwidget.cpp @@ -262,7 +262,7 @@ void TestPrintWidget::on_addButton_pressed(const SourceType type) pPicScene->clearSelection(); textItem = new PicTextItem(0, 0, type); pPicScene->addItem(textItem); - textItem->setSource(QString("")); + textItem->setText(""); QList items = pPicScene->items(); if(pPicScene->items().count()>1){ @@ -294,7 +294,7 @@ void TestPrintWidget::onEditItemDone() continue; } - pTextItem->setSource(content); + pTextItem->setText(content); if(pPicScene->items().count() == 1) { pTextItem->setPos(pTextItem->clampItemPos(pTextItem->scenePos())); @@ -330,7 +330,7 @@ void TestPrintWidget::getShowSelectItemText() // 对于文本item,将它的文本显示到编辑框 if(lastSelectedTxtItem->sourceType() == SourceType::TEXT) { ui.m_LineEdit->setEnabled(true); - m_LineEdit->setText(lastSelectedTxtItem->source().toString()); + m_LineEdit->setText(lastSelectedTxtItem->text()); } // pViewer->centerOn(lastSelectedTxtItem); @@ -512,7 +512,6 @@ bool TestPrintWidget::cacheSelectedLayerForPaste(PicTextItem *srcItem) if (!srcItem) return false; m_copiedSourceType = srcItem->sourceType(); - m_copiedSourceValue = srcItem->source(); m_copiedHtml = srcItem->toHtml(); m_copiedSpecialConditions = srcItem->SpecialConditions; m_copiedCatchCnt1StartValue = srcItem->CatchCnt1StartValue; @@ -549,33 +548,11 @@ void TestPrintWidget::pasteCopiedLayer() pPicScene->clearSelection(); pPicScene->addItem(newItem); + newItem->setHtml(m_copiedHtml); + if (m_copiedSourceType != SourceType::UNKNOWN) { newItem->setAttrs(m_copiedAttrs); } - newItem->setHtml(m_copiedHtml); - - // 某些类型需要显式恢复 source 才会正确重绘(如条码/二维码、图片、文本) - if (m_copiedSourceType == SourceType::TEXT || - m_copiedSourceType == SourceType::IMAGE || - m_copiedSourceType == SourceType::CODE) { - newItem->setSource(m_copiedSourceValue); - } - - // 计数器单独恢复类型和位数,避免仅靠 attrs 导致内容不完整 - if (m_copiedSourceType == SourceType::COUNTER) { - auto dstCounter = dynamic_cast(newItem); - if (dstCounter) { - dstCounter->setCustomFont(m_copiedCounterFontFamily); - dstCounter->setLetterSpace(m_copiedCounterLetterSpace); - - int displayNum = static_cast(m_copiedCounterType) == COUNTER_TYPE_1 ? m_printSettingModel.cnt1Settings.currValue : m_printSettingModel.cnt2Settings.currValue; - dstCounter->setCounter(static_cast(m_copiedCounterType), m_copiedCounterDigitalNum, displayNum); - } - } - - newItem->SpecialConditions = m_copiedSpecialConditions; - newItem->CatchCnt1StartValue = m_copiedCatchCnt1StartValue; - newItem->CatchCnt1CurrValue = m_copiedCatchCnt1CurrValue; auto rect = newItem->boundingRect(); // 每次粘贴会往右偏移一次 @@ -706,10 +683,10 @@ void TestPrintWidget::onImageLoaderAccepted() QString htmlImg = QString("").arg(imgPath); pPicScene->clearSelection(); - PicTextItem* item = new PicImageItem(0, 0, SourceType::IMAGE); + PicImageItem* item = new PicImageItem(0, 0, SourceType::IMAGE); item->setHtml(htmlImg); pPicScene->addItem(item); - item->setSource(imgPath); + item->setImagePath(imgPath); auto boundingRect = pPicScene->itemsBoundingRect(); int y = sysPara->para.canvasHeight - item->boundingRect().height(); item->setPos(x_item, y);