抽离printsettings前的暂存

This commit is contained in:
2026-06-26 15:29:45 +08:00
parent 864b60020e
commit 7c25953cef
7 changed files with 478 additions and 155 deletions
+1 -1
View File
@@ -261,7 +261,7 @@ void DialogFileOperation::on_pushButtonOpen_clicked()
QString dirPath = ui->radioButtonLocal->isChecked()?DOC_ROOT_DIR:UDISK_DOC_ROOT_DIR; QString dirPath = ui->radioButtonLocal->isChecked()?DOC_ROOT_DIR:UDISK_DOC_ROOT_DIR;
QString filePath = dirPath + index.data().toString(); QString filePath = dirPath + index.data().toString();
emit openFile(filePath,false); emit openFile(filePath,true);
hide(); hide();
} }
+3
View File
@@ -100,6 +100,9 @@ void InkJetPrinter::init()
msgtest->setWindowTitle(tr("提示")); msgtest->setWindowTitle(tr("提示"));
connect(msgtest, SIGNAL(finished(int)), this, SLOT(OnFinished(int))); connect(msgtest, SIGNAL(finished(int)), this, SLOT(OnFinished(int)));
// 我真的不想拉,但是今天状态燃尽了,以后再改了
m_TestPrintWidget->setPrintSettingWidget(m_PrintSetting);
// 信号槽连接(原逻辑完全不变) // 信号槽连接(原逻辑完全不变)
connect(m_MainWidget, &MainWidget::sendButtonClickedSignal, this, &InkJetPrinter::getMainWidgetButtonClickedSlot); connect(m_MainWidget, &MainWidget::sendButtonClickedSignal, this, &InkJetPrinter::getMainWidgetButtonClickedSlot);
connect(m_MainWidget,SIGNAL(setDisableAll()),this,SLOT(disableTabClick())); connect(m_MainWidget,SIGNAL(setDisableAll()),this,SLOT(disableTabClick()));
+197 -23
View File
@@ -3,6 +3,7 @@
#include <QMessageBox> #include <QMessageBox>
#include <QDebug> #include <QDebug>
#include "LogInfo.h"
PrintSetting::PrintSetting(QWidget *parent) : PrintSetting::PrintSetting(QWidget *parent) :
QWidget(parent), QWidget(parent),
@@ -29,9 +30,17 @@ PrintSetting::PrintSetting(QWidget *parent) :
ui->checkBoxPulseOutputEnable->hide(); ui->checkBoxPulseOutputEnable->hide();
ui->comboBoxEleEyeMakeClean->setCurrentIndex(0); ui->comboBoxEleEyeMakeClean->setCurrentIndex(0);
ui->comboBoxEleEyeMakeClean->hide(); ui->comboBoxEleEyeMakeClean->hide();
ui->labelSynTriggerPrintLen->hide();
ui->spinBoxSynTriggerPrintLen->hide();
ui->labelSynPrintMode->hide();
ui->comboBoxSynPrintMode->hide();
// 间隔模式默认行末对行首 // 间隔模式默认行末对行首
ui->comboBoxTimeTriggerMode->setEnabled(false); ui->comboBoxTimeTriggerMode->hide();
ui->spinBoxpluseSinal->hide(); ui->spinBoxpluseSinal->hide();
ui->labelTimeTriggerMode->hide();
ui->label_6->hide(); ui->label_6->hide();
init(); init();
@@ -84,26 +93,13 @@ void PrintSetting::buttonClickedSlot()
{ {
emit sendButtonClickedSignal(1); emit sendButtonClickedSignal(1);
}else if(btn == m_checkBtn){ }else if(btn == m_checkBtn){
emit sendButtonClickedSignal(2);
on_pushButtonApply_pressed(); on_pushButtonApply_pressed();
emit sendButtonClickedSignal(2);
} }
} }
void PrintSetting::on_pushButtonApply_pressed(){ void PrintSetting::on_pushButtonApply_pressed(){
applyPrintSettingsToSysPara(true);
applyUIPara();
applyUITriggerPara();
if(sysPara->devOp->writeFpgaPrintPara(true) != -1) {
QMessageBox box(QMessageBox::Icon::Information, tr("提示"), tr("应用成功"), QMessageBox::Ok, nullptr);
auto btn = box.button(QMessageBox::Ok);
// btn->setFixedSize(80, 40);
box.exec();
}
if(sysPara)
sysPara->saveParaToFile ();
} }
void PrintSetting::applyUIPara(){ void PrintSetting::applyUIPara(){
@@ -158,7 +154,6 @@ void PrintSetting::updateSysParaToUI(){
} }
} }
void PrintSetting::TriggerupdateSysParaToUI(){ void PrintSetting::TriggerupdateSysParaToUI(){
if(sysPara) if(sysPara)
{ {
@@ -294,8 +289,8 @@ void PrintSetting::applyUITriggerPara(){
{ {
ui->labelOutputPulseDelayMs->setText(tr("延时(毫米):")); ui->labelOutputPulseDelayMs->setText(tr("延时(毫米):"));
} }
else ui->labelOutputPulseDelayMs->setText(tr("延时(毫秒):")); else
ui->labelOutputPulseDelayMs->setText(tr("延时(毫秒):"));
} }
} }
@@ -303,19 +298,19 @@ void PrintSetting::applyUITriggerPara(){
void PrintSetting::GetTriggerUIPara(){ void PrintSetting::GetTriggerUIPara(){
if(sysPara){ if(sysPara){
sysPara->para.eleEyeTriggerPrintDelay = ui->spinBoxEleEyeTriggerPrintDelay->value(); sysPara->para.eleEyeTriggerPrintDelay = ui->spinBoxEleEyeTriggerPrintDelay->value();
sysPara->para.timeTriggerPrintMode = ui->comboBoxTimeTriggerMode->currentIndex(); sysPara->para.timeTriggerPrintMode = 0; // ui->comboBoxTimeTriggerMode->currentIndex();
sysPara->para.elecEyeTriggerInterval = ui->spinBoxEleEyeTriggerIntervalMs->value(); //电眼触发的重复间隔 sysPara->para.elecEyeTriggerInterval = ui->spinBoxEleEyeTriggerIntervalMs->value(); //电眼触发的重复间隔
int value = 0; int value = 0;
if (ui->cb_unlimited->isChecked()) value = UINT_MAX / 2; if (ui->cb_unlimited->isChecked()) value = UINT16_MAX;
else value = ui->spinBoxEleEyeTriggerRepeatCnt->value(); else value = ui->spinBoxEleEyeTriggerRepeatCnt->value();
sysPara->para.photoElectricityRepeateNum = value; sysPara->para.photoElectricityRepeateNum = value;
sysPara->para.synTriggerPrintLenMm = ui->spinBoxSynTriggerPrintLen->text().toFloat(); sysPara->para.synTriggerPrintLenMm = ui->spinBoxEleEyeTriggerIntervalMs->value();
//sysPara->para.synTriggerPrintLenMm = ui->spinBoxSynTriggerPrintLen->value(); //sysPara->para.synTriggerPrintLenMm = ui->spinBoxSynTriggerPrintLen->value();
sysPara->para.synPulseNumPerMm = ui->lineEditTriggerPulsePerMm->text().toFloat(); sysPara->para.synPulseNumPerMm = ui->lineEditTriggerPulsePerMm->text().toFloat();
sysPara->para.sysTriggerPrintMode = ui->comboBoxSynPrintMode->currentIndex(); sysPara->para.sysTriggerPrintMode = SYN_PRINT_MODE_ACCORDING_CHAR_WIDTH; // ui->comboBoxSynPrintMode->currentIndex();
if(sysPara->para.sysTriggerPrintMode == SYN_PRINT_MODE_ACCORDING_CHAR_WIDTH) if(sysPara->para.sysTriggerPrintMode == SYN_PRINT_MODE_ACCORDING_CHAR_WIDTH)
//edit@11-19 //edit@11-19
;//sysPara->para.synCharWidthRatio = ui->spinBoxSynTriggerPrintLenRatio->value(); ;//sysPara->para.synCharWidthRatio = ui->spinBoxSynTriggerPrintLenRatio->value();
@@ -751,6 +746,36 @@ void PrintSetting::setEnableSynTriggerSetting(bool flag){
ui->comboBoxSynPrintMode->setEnabled(flag); ui->comboBoxSynPrintMode->setEnabled(flag);
} }
void PrintSetting::applyPrintSettingsToSysPara(bool showTip)
{
applyUIPara();
applyUITriggerPara();
if(sysPara->devOp->writeFpgaPrintPara(true) != -1 && showTip) {
QMessageBox box(QMessageBox::Icon::Information, tr("提示"), tr("应用成功"), QMessageBox::Ok, nullptr);
auto btn = box.button(QMessageBox::Ok);
// btn->setFixedSize(80, 40);
box.exec();
}
if(sysPara)
sysPara->saveParaToFile ();
}
PrintSettingModel PrintSetting::model()
{
return PrintSettingModel::fromSysPara(sysPara);
}
void PrintSetting::setModel(const PrintSettingModel &model)
{
PrintSettingModel::applyToSysPara(model, sysPara);
updateSysParaToUI();
LogInfo::setRunStatusText("Print settings: " + PrintSettingModel::toString(model));
}
void PrintSetting::on_radioButtonSynTriggerInner_clicked() void PrintSetting::on_radioButtonSynTriggerInner_clicked()
{ {
setEnableSynTriggerSetting(false); setEnableSynTriggerSetting(false);
@@ -803,3 +828,152 @@ void PrintSetting::on_cb_unlimited_clicked(bool checked)
{ {
// ui->spinBoxEleEyeTriggerRepeatCnt->setEnabled(!checked); // ui->spinBoxEleEyeTriggerRepeatCnt->setEnabled(!checked);
} }
void PrintSettingModel::loadFromXml(PrintSettingModel& model, const QXmlStreamAttributes& attrs)
{
model.timeTriggerPrintMode = attrs.value("timeTriggerPrintMode").toInt();
model.triggerInterval = attrs.value("triggerInterval").toUInt();
model.eleEyeRepeatCnt = attrs.value("eleEyeRepeatCnt").toUInt();
model.triggerMode = attrs.value("triggerMode").toUInt();
model.encoderPulsePerMm = attrs.value("encoderPulsePerMm").toFloat();
model.printColDelay = attrs.value("printColDelay").toUInt();
model.volParaIndex = (unsigned short)attrs.value("volParaIndex").toUInt();
model.eleEyeTriggerPrintDelay = (unsigned short)attrs.value("eleEyeTriggerPrintDelay").toUInt();
model.altMirrorGap = (unsigned short)attrs.value("altMirrorGap").toUInt();
model.eleMaskTime = (unsigned short)attrs.value("eleMaskTime").toUInt();
model.syncTriggerMode = (unsigned char)attrs.value("syncTriggerMode").toUInt();
model.mode0211 = (unsigned char)attrs.value("mode0211").toUInt();
model.highVoltageAmplitude = (unsigned char)attrs.value("highVoltageAmplitude").toUInt();
model.altMirrorType = (unsigned char)attrs.value("altMirrorType").toUInt();
model.leftRightInverse = attrs.value("leftRightInverse").toInt() != 0;
model.upDownInverse = attrs.value("upDownInverse").toInt() != 0;
model.eleEyeTriggerSynPrintEn = attrs.value("eleEyeTriggerSynPrintEn").toInt() != 0;
}
void PrintSettingModel::saveToXml(const PrintSettingModel& model, QXmlStreamWriter& writer)
{
writer.writeAttribute("timeTriggerPrintMode", QString::number(model.timeTriggerPrintMode));
writer.writeAttribute("triggerInterval", QString::number(model.triggerInterval));
writer.writeAttribute("eleEyeRepeatCnt", QString::number(model.eleEyeRepeatCnt));
writer.writeAttribute("triggerMode", QString::number(model.triggerMode));
writer.writeAttribute("encoderPulsePerMm", QString::number((double)model.encoderPulsePerMm));
writer.writeAttribute("printColDelay", QString::number(model.printColDelay));
writer.writeAttribute("volParaIndex", QString::number(model.volParaIndex));
writer.writeAttribute("eleEyeTriggerPrintDelay", QString::number(model.eleEyeTriggerPrintDelay));
writer.writeAttribute("altMirrorGap", QString::number(model.altMirrorGap));
writer.writeAttribute("eleMaskTime", QString::number(model.eleMaskTime));
writer.writeAttribute("syncTriggerMode", QString::number(model.syncTriggerMode));
writer.writeAttribute("mode0211", QString::number(model.mode0211));
writer.writeAttribute("highVoltageAmplitude", QString::number(model.highVoltageAmplitude));
writer.writeAttribute("altMirrorType", QString::number(model.altMirrorType));
writer.writeAttribute("leftRightInverse", QString::number(model.leftRightInverse));
writer.writeAttribute("upDownInverse", QString::number(model.upDownInverse));
writer.writeAttribute("eleEyeTriggerSynPrintEn", QString::number(model.eleEyeTriggerSynPrintEn));
}
void PrintSettingModel::applyToSysPara(const PrintSettingModel &model, SysPara *sysPara)
{
// 喷印风格相关
sysPara->para.leftRightInverse = model.leftRightInverse;
sysPara->para.upDownInverse = model.upDownInverse;
sysPara->para.currSelectVolPara = model.volParaIndex;
sysPara->para.printColDelay = model.printColDelay;
sysPara->para.HighVoltageAmplitude = model.highVoltageAmplitude;
sysPara->para.mode0211 = model.mode0211;
sysPara->para.printTriggerMode = model.triggerMode;
sysPara->para.eleEyeTriggerPrintDelay = model.eleEyeTriggerPrintDelay;
sysPara->para.timeTriggerPrintMode = model.timeTriggerPrintMode;
sysPara->para.elecEyeTriggerInterval = model.triggerInterval;
sysPara->para.photoElectricityRepeateNum = model.eleEyeRepeatCnt;
sysPara->para.synTriggerPrintLenMm = (float)model.triggerInterval;
sysPara->para.synPulseNumPerMm = model.encoderPulsePerMm;
sysPara->para.sysTriggerPrintMode = SYN_PRINT_MODE_ACCORDING_CHAR_WIDTH;
sysPara->para.AltMirrorGap = (model.altMirrorType << 12) | ((uint32_t)(model.altMirrorGap) & 0x0fff);
sysPara->para.printDelayMs = (int)model.triggerInterval;
sysPara->para.eleEyeTriggerSynPrintEn = model.eleEyeTriggerSynPrintEn;
// 韩国版本不需要电眼清零 byons@2026年6月23日
sysPara->para.eleEyeClearCntInSynMode = 0x20;
sysPara->para.syncRevCompDisable = 0;
sysPara->para.synPulsePerMmX8 = (unsigned short)((unsigned int)sysPara->para.synPulseNumPerMm <<8);
sysPara->para.eleMaskTime = model.eleMaskTime;
// 带补偿的正反转打印选项,位于最后两个comboBox item
sysPara->para.synchronizorActType = model.syncTriggerMode > 2 ?
model.syncTriggerMode - 2 : model.syncTriggerMode;
sysPara->para.syncRevCompDisable = model.syncTriggerMode <= 2;
sysPara->para.eleEyeEdgetTriggerInner =
model.triggerMode != PRINT_TRIGGER_ELEC_EYE_EDGE
&& model.triggerMode != PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL;
sysPara->para.eleEyeEdgetTriggerExternal = !sysPara->para.eleEyeEdgetTriggerInner;
bool isEyeMode = (model.triggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE
|| model.triggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL);
sysPara->para.synTriggerInner =
model.triggerMode != PRINT_TRIGGER_SYNCHRONIZER
&& !(isEyeMode && model.eleEyeTriggerSynPrintEn);
sysPara->para.synTriggerExternal = !sysPara->para.synTriggerInner;
}
PrintSettingModel PrintSettingModel::fromSysPara(SysPara *sysPara)
{
PrintSettingModel model;
model.leftRightInverse = sysPara->para.leftRightInverse;
model.upDownInverse = sysPara->para.upDownInverse;
model.mode0211 = sysPara->para.mode0211;
model.printColDelay = sysPara->para.printColDelay;
model.highVoltageAmplitude = sysPara->para.HighVoltageAmplitude;
model.volParaIndex = sysPara->para.currSelectVolPara;
model.triggerMode = sysPara->para.printTriggerMode;
model.eleEyeTriggerSynPrintEn = sysPara->para.eleEyeTriggerSynPrintEn;
model.eleMaskTime = sysPara->para.eleMaskTime;
int idx = int(sysPara->para.synchronizorActType);
if (!sysPara->para.syncRevCompDisable && sysPara->para.synchronizorActType != 0) {
idx = int(sysPara->para.synchronizorActType) + 2;
}
model.syncTriggerMode = idx;
if(sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE ||
sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL) {
model.triggerInterval = (unsigned)sysPara->para.elecEyeTriggerInterval;
}
else if(sysPara->para.printTriggerMode == PRINT_TRIGGER_SYNCHRONIZER) {
model.triggerInterval = (unsigned)sysPara->para.synTriggerPrintLenMm;
}
else {
model.triggerInterval = (unsigned)sysPara->para.printDelayMs;
}
model.timeTriggerPrintMode = sysPara->para.timeTriggerPrintMode;
model.eleEyeRepeatCnt = sysPara->para.photoElectricityRepeateNum;
model.eleEyeTriggerPrintDelay = sysPara->para.eleEyeTriggerPrintDelay;
model.encoderPulsePerMm = sysPara->para.synPulseNumPerMm;
model.altMirrorType = sysPara->para.AltMirrorGap >> 12;
model.altMirrorGap = sysPara->para.AltMirrorGap & 0x0fff;
return model;
}
QString PrintSettingModel::toString(const PrintSettingModel &model)
{
QString str = QString::asprintf("LRInverse: %d, UpDownInverse: %d, printColDelay: %d, \r\n"
"highVoltageAmplitude: %d, volParaIndex: %d, triggerMode: %d, eleEyeTriggerSynPrintEn: %d, \r\n"
"eleMaskTime: %d, triggerInterval: %d, timeTriggerPrintMode: %d, eleEyeRepeatCnt: %d, \r\n"
"eleEyeTriggerPrintDelay: %d, encoderPulsePerMm: %d, altMirrorType: %d, altMirrorGap: %d. \r\n",
model.leftRightInverse, model.upDownInverse, model.printColDelay, model.highVoltageAmplitude, model.volParaIndex, model.triggerMode,
model.eleEyeTriggerSynPrintEn, model.eleMaskTime, model.triggerInterval, model.timeTriggerPrintMode, model.eleEyeRepeatCnt,
model.eleEyeTriggerPrintDelay, model.encoderPulsePerMm, model.altMirrorType, model.altMirrorGap);
return str;
}
+81 -3
View File
@@ -4,12 +4,87 @@
#include <QWidget> #include <QWidget>
#include <QPushButton> #include <QPushButton>
#include <QXmlStreamWriter>
#include "PulseNumFix.h" #include "PulseNumFix.h"
namespace Ui { namespace Ui {
class PrintSetting; class PrintSetting;
} }
#pragma pack(1)
/**
* @brief 从sysPara中提取的某些用于跟随工作文件保存的打印设置
*
*
* @remark
* 字段声明位置按照类型长度降序排列,用于在紧凑内存对齐的状态下尽量提升性能
* 所以看声明顺序有点奇怪
* 使用紧凑内存对齐的原因是为了方便直接映射为字符串,方便保存
*/
struct PrintSettingModel
{
int timeTriggerPrintMode = 0; // 间隔模式, 0: 行末-> 行首 1: 行首对行首 ,韩国人要求只保留一个,所以应该固定为 0
/**
* 触发间隔。
* 时延模式,指间隔多久打印一次。单位ms,
* 电眼 + 同步器模式: 根据 eleEyeRepeatCnt 设定的重复次数,确定重复间隔,单位长度mm
* 电眼模式:根据 eleEyeRepeatCnt 设定的重复次数,确定重复间隔,单位是时间 ms
* 同步器模式:重复间隔,单位长度 mm
* */
unsigned triggerInterval = 0;
unsigned eleEyeRepeatCnt = 1; // 电眼触发时,打印内容的次数,也就是重复数
unsigned triggerMode = 0; // 触发模式
float encoderPulsePerMm = 40; // 编码器的每毫米脉冲数
unsigned printColDelay = 6; // 打印列延迟,(字宽)
unsigned short volParaIndex = 0; // 喷印模式的索引, 决定选择哪组电压参数
unsigned short eleEyeTriggerPrintDelay = 0; // 0x38 电眼 + 同步器模式下,电眼触发后,同步打印延迟时间,单位:毫秒
unsigned short altMirrorGap = 0; // 镜像交替间隔, 单位:喷印个数
unsigned short eleMaskTime = 0; // 电眼封锁时间或距离 单位ms或mm
/**
* 同步器的正反转模式
* 0:正反转打印
* 1:只正转打印
* 2:只反转打印
* 3:带补偿的正转打印
* 4:带补偿的反转打印
*/
unsigned char syncTriggerMode = 0;
unsigned char mode0211 = 1; // 0211模式
unsigned char highVoltageAmplitude = 75; // 界面显示 字高,但是名字叫 高压振幅? 谁解释一下
unsigned char altMirrorType = 0; // 镜像交替模式
bool leftRightInverse = false; // 信息左右颠倒
bool upDownInverse = false; // 信息上下颠倒
bool eleEyeTriggerSynPrintEn = false;
static void loadFromXml(PrintSettingModel& model, const QXmlStreamAttributes& attrs);
static void saveToXml(const PrintSettingModel& model, QXmlStreamWriter& writer);
static void applyToSysPara(const PrintSettingModel& model, SysPara* sysPara);
static PrintSettingModel fromSysPara(SysPara* sysPara);
static QString toString(const PrintSettingModel& model);
};
#pragma pack()
class PrintSetting : public QWidget class PrintSetting : public QWidget
{ {
Q_OBJECT Q_OBJECT
@@ -41,6 +116,12 @@ public:
void setEnableSynTriggerSetting(bool); void setEnableSynTriggerSetting(bool);
void applyPrintSettingsToSysPara(bool showTip = true);
PrintSettingModel model();
void setModel(const PrintSettingModel& model);
private slots: private slots:
void buttonClickedSlot(); void buttonClickedSlot();
@@ -87,12 +168,9 @@ private:
void init(); void init();
void applyStyleSheet(); // 应用样式表 void applyStyleSheet(); // 应用样式表
signals: signals:
void sendButtonClickedSignal(int index); void sendButtonClickedSignal(int index);
}; };
#endif // PRINTSETTING_H #endif // PRINTSETTING_H
+138 -114
View File
@@ -26,7 +26,7 @@
<enum>Qt::StrongFocus</enum> <enum>Qt::StrongFocus</enum>
</property> </property>
<property name="currentIndex"> <property name="currentIndex">
<number>4</number> <number>1</number>
</property> </property>
<widget class="QWidget" name="tab"> <widget class="QWidget" name="tab">
<attribute name="title"> <attribute name="title">
@@ -564,10 +564,36 @@
<x>210</x> <x>210</x>
<y>60</y> <y>60</y>
<width>521</width> <width>521</width>
<height>191</height> <height>81</height>
</rect> </rect>
</property> </property>
<layout class="QGridLayout" name="gridLayout_2"> <layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="2">
<widget class="QPushButton" name="pushButtonApplyPulseFix">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>0</height>
</size>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="text">
<string>脉冲数修正</string>
</property>
<property name="icon">
<iconset resource="image.qrc">
<normaloff>:/icon/pulse.png</normaloff>:/icon/pulse.png</iconset>
</property>
</widget>
</item>
<item row="0" column="0"> <item row="0" column="0">
<widget class="QLabel" name="labelTriggerPulsePerMm"> <widget class="QLabel" name="labelTriggerPulsePerMm">
<property name="minimumSize"> <property name="minimumSize">
@@ -612,118 +638,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="2">
<widget class="QPushButton" name="pushButtonApplyPulseFix">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>0</height>
</size>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="text">
<string>脉冲数修正</string>
</property>
<property name="icon">
<iconset resource="image.qrc">
<normaloff>:/icon/pulse.png</normaloff>:/icon/pulse.png</iconset>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="labelSynTriggerPrintLen">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>37</height>
</size>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>喷印间隔(毫米):</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="spinBoxSynTriggerPrintLen">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>150</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="labelSynPrintMode">
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>同步喷印模式:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="comboBoxSynPrintMode">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>37</height>
</size>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<item>
<property name="text">
<string>按字符宽度</string>
</property>
</item>
<item>
<property name="text">
<string>按喷印比例</string>
</property>
</item>
</widget>
</item>
<item row="1" column="2"> <item row="1" column="2">
<widget class="QComboBox" name="comboBoxSyncActType"> <widget class="QComboBox" name="comboBoxSyncActType">
<property name="sizePolicy"> <property name="sizePolicy">
@@ -815,6 +729,116 @@
</property> </property>
</widget> </widget>
</widget> </widget>
<widget class="QLabel" name="labelSynTriggerPrintLen">
<property name="geometry">
<rect>
<x>100</x>
<y>350</y>
<width>179</width>
<height>37</height>
</rect>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>37</height>
</size>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>喷印间隔(毫米):</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
<widget class="QLineEdit" name="spinBoxSynTriggerPrintLen">
<property name="geometry">
<rect>
<x>280</x>
<y>350</y>
<width>150</width>
<height>31</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>150</width>
<height>16777215</height>
</size>
</property>
</widget>
<widget class="QComboBox" name="comboBoxSynPrintMode">
<property name="geometry">
<rect>
<x>280</x>
<y>310</y>
<width>150</width>
<height>36</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>37</height>
</size>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<item>
<property name="text">
<string>按字符宽度</string>
</property>
</item>
<item>
<property name="text">
<string>按喷印比例</string>
</property>
</item>
</widget>
<widget class="QLabel" name="labelSynPrintMode">
<property name="geometry">
<rect>
<x>90</x>
<y>310</y>
<width>179</width>
<height>36</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>同步喷印模式:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</widget> </widget>
<widget class="QWidget" name="other"> <widget class="QWidget" name="other">
<attribute name="title"> <attribute name="title">
+49 -11
View File
@@ -16,7 +16,7 @@
#include <QPalette> #include <QPalette>
#include "scene/PicScheduleShiftItem.h" #include "scene/PicScheduleShiftItem.h"
#include "scene/PicCounterItem.h" #include "scene/PicCounterItem.h"
#include "Printsetting.h"
#pragma execution_character_set("utf-8") #pragma execution_character_set("utf-8")
@@ -430,6 +430,10 @@ void TestPrintWidget::saveFile(){
// writer.writeCDATA((picText->toHtml())); // writer.writeCDATA((picText->toHtml()));
writer.writeEndElement(); // 结束子元素 </picscene> writer.writeEndElement(); // 结束子元素 </picscene>
} }
writer.writeEmptyElement("PrintSettings");
PrintSettingModel::saveToXml(m_printSetting->model(), writer);
writer.writeEndElement(); // 结束根元素 </picscenes> writer.writeEndElement(); // 结束根元素 </picscenes>
writer.writeEndDocument(); // 结束文档 writer.writeEndDocument(); // 结束文档
fsync(file.handle()); fsync(file.handle());
@@ -455,7 +459,8 @@ void TestPrintWidget::onSaveASFile(QString filename,bool Flag){// use for dialog
/* /*
* 和DialogFileOperation对接 * 和DialogFileOperation对接
* */ * */
void TestPrintWidget::onFileOpen(QString filePath,bool insertFlag){ void TestPrintWidget::onFileOpen(QString filePath,bool reviewFlag){
if(editMode==SCENE) { if(editMode==SCENE) {
if(filePath.endsWith(".xml")) if(filePath.endsWith(".xml"))
{ {
@@ -527,10 +532,12 @@ void TestPrintWidget::onFileOpen(QString filePath,bool insertFlag){
//qDebug() << QString::fromLocal8Bit("属性:Version(%1)").arg(strVersion); //qDebug() << QString::fromLocal8Bit("属性:Version(%1)").arg(strVersion);
} }
parseVbfile(reader); parseVbfile(reader, reviewFlag);
} }
break; break;
} }
case QXmlStreamReader::EndDocument: { //*/*/ 结束文档 case QXmlStreamReader::EndDocument: { //*/*/ 结束文档
//qDebug() << QString::fromLocal8Bit("********** 结束文档 ********** "); //qDebug() << QString::fromLocal8Bit("********** 结束文档 ********** ");
break; break;
@@ -563,7 +570,7 @@ void TestPrintWidget::onFileOpen(QString filePath,bool insertFlag){
extern QStringList stringListRecive; extern QStringList stringListRecive;
void TestPrintWidget::parseVbfile(QXmlStreamReader &reader) { void TestPrintWidget::parseVbfile(QXmlStreamReader &reader, bool loadPrintSetting) {
// int textItemPosX; // int textItemPosX;
// int textItemPosY; // int textItemPosY;
// textItemPosX = picText->pos().x() - pPicScene->itemsBoundingRect().x(); // textItemPosX = picText->pos().x() - pPicScene->itemsBoundingRect().x();
@@ -605,7 +612,17 @@ void TestPrintWidget::parseVbfile(QXmlStreamReader &reader) {
} }
else if(strElementName == "itemAttrs") { else if(strElementName == "itemAttrs") {
itemAttrs = reader.attributes(); itemAttrs = reader.attributes();
} else if(strElementName == "PrintSettings" && loadPrintSetting) {
// 加载打印设置
QXmlStreamAttributes attrs = reader.attributes();
PrintSettingModel model;
PrintSettingModel::loadFromXml(model, attrs);
m_printSetting->setModel(model);
m_printSetting->applyPrintSettingsToSysPara(false);
reader.skipCurrentElement();
} }
} else if (reader.isEntityReference()) { // 实体引用 } else if (reader.isEntityReference()) { // 实体引用
QString strName = reader.name().toString(); QString strName = reader.name().toString();
QString strText = reader.text().toString(); QString strText = reader.text().toString();
@@ -950,6 +967,27 @@ void TestPrintWidget::on_delButton_pressed()
} }
} }
void TestPrintWidget::setPrintSettingWidget(PrintSetting *wid)
{
if(!wid) {
qWarning() << "Empty PrintSetting object pointer";
return;
}
if(m_printSetting) {
m_printSetting->disconnect(this);
m_printSetting = nullptr;
}
m_printSetting = wid;
connect(m_printSetting, &PrintSetting::sendButtonClickedSignal, this, [this](int i) {
if(i == 2) {
saveFile();
LogInfo::setRunStatusText("Save print setting.");
}
});
}
bool TestPrintWidget::eventFilter(QObject *watched, QEvent *event) { bool TestPrintWidget::eventFilter(QObject *watched, QEvent *event) {
// 只处理 graphicsView 的事件 // 只处理 graphicsView 的事件
if (watched == ui.graphicsView) { if (watched == ui.graphicsView) {
@@ -1071,16 +1109,16 @@ void TestPrintWidget::onSceneFocusedItemPosChanged(QPoint p)
ui.m_lblY->setText(QString::asprintf("Y:%d", p.y())); ui.m_lblY->setText(QString::asprintf("Y:%d", p.y()));
} }
void TestPrintWidget::on_newfileButton_pressed(){ void TestPrintWidget::on_newfileButton_pressed()
{
// if (maybeSave()) { // if (maybeSave()) {
pPicScene->clear(); pPicScene->clear();
pViewer->viewport()->update(); pViewer->viewport()->update();
xmlfileName = ""; xmlfileName = "";
// TODO:: 新建文件的入口 // TODO:: 新建文件的入口
sendButtonClickedSignal(21); //新建文件完成 sendButtonClickedSignal(21); //新建文件完成
} }
void TestPrintWidget::slt_BarCodeItemDone() void TestPrintWidget::slt_BarCodeItemDone()
+7 -1
View File
@@ -39,6 +39,8 @@ typedef struct ItemReplaceInfo
#define SOURCE_COUNTER1 "Counter1_QvQ" #define SOURCE_COUNTER1 "Counter1_QvQ"
#define SOURCE_COUNTER2 "Counter2_QvQ" #define SOURCE_COUNTER2 "Counter2_QvQ"
class PrintSetting;
class TestPrintWidget : public QWidget class TestPrintWidget : public QWidget
{ {
Q_OBJECT Q_OBJECT
@@ -67,6 +69,8 @@ public:
void on_delButton_pressed(); void on_delButton_pressed();
void setPrintSettingWidget(PrintSetting* wid);
void addDateTimeItem(const DateItemModel& model, const TextItemModel& textModel); void addDateTimeItem(const DateItemModel& model, const TextItemModel& textModel);
void addScheduleShiftsItem(QVector<ScheduleModel> schedules, TextItemModel txtModel); void addScheduleShiftsItem(QVector<ScheduleModel> schedules, TextItemModel txtModel);
@@ -136,7 +140,7 @@ private:
QTextEdit* m_TextEdit = nullptr; QTextEdit* m_TextEdit = nullptr;
QLineEdit* m_LineEdit; QLineEdit* m_LineEdit;
void parseVbfile(QXmlStreamReader &reader); void parseVbfile(QXmlStreamReader &reader, bool loadPrintSetting = false);
/** /**
* @brief 对 on_KeyUp_clicked 等按键事件的简便包装 * @brief 对 on_KeyUp_clicked 等按键事件的简便包装
@@ -160,6 +164,8 @@ private:
// 修改条形码和二维码的标志 // 修改条形码和二维码的标志
bool editCodeFlag = false; bool editCodeFlag = false;
PrintSetting* m_printSetting = nullptr;
QString xmlfileName; QString xmlfileName;
DialogSaveFile *dialogSaveFile; DialogSaveFile *dialogSaveFile;
DialogFileOperation *dialogFileOperation; DialogFileOperation *dialogFileOperation;