#include "bayManagerDlg.h" #include "bayManagerContentDlg.h" #include "graphicsItem/electricBayItem.h" #include "graphicsDataModel/fixedPortsModel.h" #include "ui_bayManagerDlg.h" BayManagerDlg::BayManagerDlg(QWidget *parent) : QDialog(parent) , ui(new Ui::bayManagerDlg) ,_modelController(nullptr) { ui->setupUi(this); this->setWindowFlags(Qt::FramelessWindowHint | windowFlags()); initial(); } BayManagerDlg::~BayManagerDlg() { delete ui; } void BayManagerDlg::initial() { connect(ui->btn_ok,&QPushButton::clicked,this,&BayManagerDlg::onOkClicked); connect(ui->btn_cancel,&QPushButton::clicked,this,&BayManagerDlg::onCancelClicked); connect(ui->listWidget,&QListWidget::itemClicked,this,&BayManagerDlg::onListItemClicked); } void BayManagerDlg::showDlg() { show(); clearData(); initData(); } void BayManagerDlg::initData() { QList lstBay; QMap mapBay = _modelController->allBayItem(); //获取当前图中所有bay for(auto& item:mapBay){ AbstractProperty* p = item->getProperty(); BayProperty* pBayPro = dynamic_cast(p); if(pBayPro){ lstBay.append(pBayPro); } } generatePage(lstBay); } void BayManagerDlg::clearData() { ui->listWidget->clear(); for(auto& page:_contentData) { ui->stackedWidget->removeWidget(page); } qDeleteAll(_contentData); _contentData.clear(); } void BayManagerDlg::onOkClicked() { hide(); for(auto& pDlg:_contentData){ if(pDlg){ pDlg->saveSetting(); } } } void BayManagerDlg::onCancelClicked() { hide(); } void BayManagerDlg::onListItemClicked(QListWidgetItem *item) { int index = item->data(Qt::UserRole+1).toInt(); ui->stackedWidget->setCurrentIndex(index); } void BayManagerDlg::generatePage(QList lstBay) { for(auto& pData:lstBay) { BayManagerContentDlg* pBay = new BayManagerContentDlg(this); pBay->setProperty(pData); pBay->updateByProperty(); int index = ui->stackedWidget->addWidget(pBay); _contentData.insert(index,pBay); QListWidgetItem* pItem = new QListWidgetItem(pData->name()); pItem->setData(Qt::UserRole+1,index); ui->listWidget->addItem(pItem); } if(ui->stackedWidget->count() != 0) ui->stackedWidget->setCurrentIndex(0); }