#include "LightTool.h" #include lighttool::lighttool(QWidget* parent) : ToolInterface(parent), ui(new Ui::lighttool) { ui->setupUi(this); ui->lineEdit_Mult->setText("0.1"); ui->lineEdit_Add->setText("0"); ui->lineEdit_Mult->setValidator(new QIntValidator(0, 16777215, this)); } lighttool::~lighttool() { delete ui; } bool lighttool::Serialized(QDataStream& ar, bool bIsOut) { int paranum;//参数数量 if (bIsOut)//保存参数流程 { paranum = 2; ar << paranum;//先保存参数数量 ar << (int)1 << m_fMult; ar << (int)2 << m_nAdd; } else//加载参数流程,参数加载顺序一定要跟保存顺序一致 { int nCurrentIndex = 0; int para; ar >> paranum;//读取参数数量 for (int i = 0; i < paranum; i++) { ar >> para; switch (para) { case 1: ar >> m_fMult; break; case 2: ar >> m_nAdd; break; default: { qWarning() << "Serialized(In) Error"; return false; } break; } } { ui->lineEdit_Mult->setText(QString::number(m_fMult, 'f', 1)); ui->lineEdit_Add->setText(QString::number(m_nAdd)); emit updateParameter(ShowParameter()); } } return true; } QString lighttool::ShowParameter() { QString str; m_fMult = ui->lineEdit_Mult->text().toDouble(); m_nAdd = ui->lineEdit_Add->text().toInt(); str += QString::number(m_fMult, 'f', 1); str += ","; str += QString::number(m_nAdd); return str; } int lighttool::Execute() { int result = 1; m_fMult = ui->lineEdit_Mult->text().toDouble(); m_nAdd = ui->lineEdit_Add->text().toInt(); try { ScaleImage (m_InImage, &m_OutImage, m_fMult, m_nAdd); } catch(...) { } return result; } void lighttool::on_BTN_Add1_clicked() { ui->lineEdit_Mult->setText(QString::number(ui->lineEdit_Mult->text().toDouble() + 0.1, 'f', 1)); emit updateParameter(ShowParameter()); } void lighttool::on_BTN_Sub1_clicked() { if(ui->lineEdit_Mult->text().toDouble() > 0) { ui->lineEdit_Mult->setText(QString::number(ui->lineEdit_Mult->text().toDouble() - 0.1, 'f', 1)); emit updateParameter(ShowParameter()); } } void lighttool::on_BTN_Add2_clicked() { ui->lineEdit_Add->setText(QString::number(ui->lineEdit_Add->text().toInt() + 1)); emit updateParameter(ShowParameter()); } void lighttool::on_BTN_Sub2_clicked() { ui->lineEdit_Add->setText(QString::number(ui->lineEdit_Add->text().toInt() - 1)); emit updateParameter(ShowParameter()); } void lighttool::on_lineEdit_Mult_editingFinished() { emit updateParameter(ShowParameter()); } void lighttool::on_lineEdit_Add_editingFinished() { emit updateParameter(ShowParameter()); }