新二维码/条形码编辑逻辑

This commit is contained in:
2026-05-06 10:34:48 +08:00
parent a06c926162
commit a9e99f4425
76 changed files with 12679 additions and 12744 deletions
+52 -8
View File
@@ -1,38 +1,82 @@
#include "piccodeitem.h"
#include "ItemCommon.h"
#include <QDebug>
PicCodeItem::PicCodeItem(QGraphicsItem *parent, QGraphicsScene *scene, const SourceType type)
:PicTextItem(parent, scene, type)
:PicTextItem(parent, scene, type),
m_currCounterValues({0, 0})
{
setFlag(QGraphicsItem::ItemIsMovable);
setFlag(QGraphicsItem::ItemIsSelectable);
setFlag(QGraphicsItem::ItemIsFocusable);
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
connect(&m_dateVarTimer, &QTimer::timeout, this, [this](){
updateVariants();
});
// m_dateVarTimer.start(50);
}
PicCodeItem::~PicCodeItem()
{
m_dateVarTimer.stop();
}
QVariant PicCodeItem::source()
{
return imagePath;
return m_currCodeTxt;
}
void PicCodeItem::setSource(QVariant var)
{
imagePath = var.toString();
applyModify();
}
void PicCodeItem::setBarcodeViewModel(const BarcodeViewModel &vm)
{
m_vm = vm;
m_currCodeTxt = "";
updateVariants();
qInfo() << "Barcode model: \r\n" << qPrintable(BarcodeViewModel::toString(vm));
}
BarcodeViewModel PicCodeItem::barcodeViewModel()
{
return m_vm;
}
bool PicCodeItem::updateVariants(const QVector<int> counters)
{
m_currCounterValues = counters;
return updateVariants();
}
QImage PicCodeItem::itemImage()
{
return QImage(imagePath);
return m_codeImage;
}
void PicCodeItem::setCustomAttrs(const QXmlStreamAttributes &attrs)
{
imagePath = attrs.value("CodeImage").toString();
auto vm = BarcodeViewModel::loadFromXml(attrs);
setBarcodeViewModel(vm);
}
void PicCodeItem::saveCustomAttrs(QXmlStreamAttributes &attrs)
{
attrs.append("CodeImage", imagePath);
BarcodeViewModel::saveToXml(m_vm, attrs);
}
bool PicCodeItem::updateVariants()
{
auto txt = generateTxtFromBarcodeViewModel(m_vm, {m_currCounterValues[0], m_currCounterValues[1]}, QDateTime::currentDateTime());
if(txt != m_currCodeTxt || m_currCodeTxt.isEmpty()) {
m_currCodeTxt = txt;
m_codeImage = generateBarcodeImage(txt, m_vm.type, m_vm.format);
applyModify();
return true;
}
return false;
}