#include "compareitemdialog.h" #include "ui_compareitemdialog.h" CompareItemDialog::CompareItemDialog(QWidget *parent) : QDialog(parent) , ui(new Ui::CompareItemDialog) { ui->setupUi(this); setWindowFlag(Qt::FramelessWindowHint); setAttribute(Qt::WA_TranslucentBackground); connect(ui->btnCancel, &QPushButton::clicked, this, &CompareItemDialog::reject); connect(ui->btnClose, &QPushButton::clicked, this, &CompareItemDialog::close); connect(ui->btnAdd, &QPushButton::clicked, this, &CompareItemDialog::OnBtnAddClicked); } CompareItemDialog::~CompareItemDialog() { delete ui; } void CompareItemDialog::OnBtnAddClicked() { QVBoxLayout* pLayout = qobject_cast(ui->scrollAreaWidgetContents->layout()); if(pLayout) { SingleCompareRoadWidget *pWgt = new SingleCompareRoadWidget(this); connect(pWgt, &SingleCompareRoadWidget::deleted, this, &CompareItemDialog::OnCompareRoadWgtDeleted); pWgt->setIndex(m_listOtherRoadWgt.size() + 3); pWgt->setDelBtnVisible(true); pLayout->insertWidget(m_listOtherRoadWgt.size(), pWgt); m_listOtherRoadWgt.append(pWgt); } } void CompareItemDialog::OnCompareRoadWgtDeleted(int nIndex) { int nRealIndex = nIndex - 3; if(nRealIndex < m_listOtherRoadWgt.size()) { SingleCompareRoadWidget *pWgt = m_listOtherRoadWgt.at(nRealIndex); m_listOtherRoadWgt.removeOne(pWgt); delete pWgt; pWgt = nullptr; } for(int i = nRealIndex; i < m_listOtherRoadWgt.size(); i++) { m_listOtherRoadWgt.at(i)->setIndex(i + 3); } }