#include "blobclose.h" #include "ui_blobclose.h" #include "../ToolDialog.h" class ToolDialogImpl; BlobClose::BlobClose(QWidget *parent , ToolDialogImpl* p) : ToolInterface(parent), ui(new Ui::BlobClose) { ui->setupUi(this); m_pToolDialogImpl = p; ui->lineEdit_Width->setText("5"); ui->lineEdit_Height->setText("6"); ui->lineEdit_Size->setText("1"); ui->lineEdit_Width->setValidator(new QIntValidator(1, 16777215, this)); ui->lineEdit_Height->setValidator(new QIntValidator(1, 16777215, this)); ui->lineEdit_Size->setValidator(new QIntValidator(1, 16777215, this)); ui->widget2->setVisible(false); ui->comboBox->setView(new QListView()); ui->comboBox_index->setView(new QListView()); if(m_pToolDialogImpl->m_LinkProcess.size() > 0) { ui->comboBox_index->setVisible(true); ui->label_index->setVisible(true); } else { ui->comboBox_index->setVisible(false); ui->label_index->setVisible(false); } for(int i = 0; i < m_pToolDialogImpl->m_LinkProcess.size(); i++) { ui->comboBox_index->addItem(QString::number(i)); } } BlobClose::~BlobClose() { delete ui; } bool BlobClose::Serialized(QDataStream& ar, bool bIsOut) { int paranum;//参数数量 if (bIsOut)//保存参数流程 { paranum = 5; ar << paranum;//先保存参数数量 ar << (int)1 << m_nWidth; ar << (int)2 << m_nHeight; ar << (int)3 << m_nSize; ar << (int)4 << m_nType; ar << (int)5 << ui->comboBox_index->currentIndex(); } else//加载参数流程,参数加载顺序一定要跟保存顺序一致 { int nCurrentIndex = 0; int para; ar >> paranum;//读取参数数量 for (int i = 0; i < paranum; i++) { ar >> para; switch (para) { case 1: ar >> m_nWidth; break; case 2: ar >> m_nHeight; break; case 3: ar >> m_nSize; break; case 4: ar >> m_nType; break; case 5: ar >> nCurrentIndex; break; default: { qWarning() << "Serialized(In) Error"; return false; } break; } } { ui->comboBox_index->setCurrentIndex(nCurrentIndex); ui->lineEdit_Width->setText(QString::number(m_nWidth)); ui->lineEdit_Height->setText(QString::number(m_nHeight)); ui->lineEdit_Size->setText(QString::number(m_nSize)); emit updateParameter(ShowParameter()); } } return true; } QString BlobClose::ShowParameter() { QString str; m_nSize = ui->lineEdit_Size->text().toInt(); m_nWidth = ui->lineEdit_Width->text().toInt(); m_nHeight = ui->lineEdit_Height->text().toInt(); m_nType = ui->comboBox->currentIndex(); if(m_nType == 0) { str += ui->comboBox->currentText(); str += ","; str += QString::number(m_nSize); } else { str += ui->comboBox->currentText(); str += ","; str += QString::number(m_nWidth); str += ","; str += QString::number(m_nHeight); } return str; } int BlobClose::Execute() { int result = 1; m_nSize = ui->lineEdit_Size->text().toInt(); m_nType = ui->comboBox->currentIndex(); m_nWidth = ui->lineEdit_Width->text().toInt(); m_nHeight = ui->lineEdit_Height->text().toInt(); try { if(ui->comboBox_index->currentIndex() == 0) { if(m_nType == 0) { ClosingCircle (m_InImage, &m_OutImage, m_nSize); } else { ClosingRectangle1 (m_InImage, &m_OutImage, m_nWidth, m_nHeight); } } else { int index = ui->comboBox_index->currentIndex() - 1; HObject inputimage = m_pToolDialogImpl->m_LinkProcess[index].p_dlg->GetResult(); if(m_nType == 0) { ClosingCircle (inputimage, &m_OutImage, m_nSize); } else { ClosingRectangle1 (inputimage, &m_OutImage, m_nWidth, m_nHeight); } } } catch(...) { } return result; } void BlobClose::on_BTN_Add1_clicked() { ui->lineEdit_Size->setText(QString::number(ui->lineEdit_Size->text().toInt() + 1)); emit updateParameter(ShowParameter()); } void BlobClose::on_BTN_Sub1_clicked() { if(ui->lineEdit_Size->text().toInt() >= 2) { ui->lineEdit_Size->setText(QString::number(ui->lineEdit_Size->text().toInt() - 1)); emit updateParameter(ShowParameter()); } } void BlobClose::on_BTN_Add2_clicked() { ui->lineEdit_Width->setText(QString::number(ui->lineEdit_Width->text().toInt() + 1)); emit updateParameter(ShowParameter()); } void BlobClose::on_BTN_Sub2_clicked() { if(ui->lineEdit_Width->text().toInt() >= 2) { ui->lineEdit_Width->setText(QString::number(ui->lineEdit_Width->text().toInt() - 1)); emit updateParameter(ShowParameter()); } } void BlobClose::on_BTN_Add3_clicked() { ui->lineEdit_Height->setText(QString::number(ui->lineEdit_Height->text().toInt() + 1)); emit updateParameter(ShowParameter()); } void BlobClose::on_BTN_Sub3_clicked() { if(ui->lineEdit_Height->text().toInt() >= 2) { ui->lineEdit_Height->setText(QString::number(ui->lineEdit_Height->text().toInt() - 1)); emit updateParameter(ShowParameter()); } } void BlobClose::on_lineEdit_Size_editingFinished() { emit updateParameter(ShowParameter()); } void BlobClose::on_lineEdit_Width_editingFinished() { emit updateParameter(ShowParameter()); } void BlobClose::on_lineEdit_Height_editingFinished() { emit updateParameter(ShowParameter()); } void BlobClose::on_comboBox_currentIndexChanged(int index) { emit updateParameter(ShowParameter()); if(index == 0) { ui->widget1->setVisible(true); ui->widget2->setVisible(false); } else { ui->widget1->setVisible(false); ui->widget2->setVisible(true); } } void BlobClose::on_comboBox_index_currentIndexChanged(int index) { if(index > 0) { emit updateParameterIndex(QString::number(index - 1)); } emit updateParameter(ShowParameter()); }