#include "itemPropertyDlg.h" #include "propertyContentDlg.h" #include "dataManager.h" #include "graphicsItem/graphicsBaseItem.h" #include "ui_itemPropertyDlg.h" #include ItemPropertyDlg::ItemPropertyDlg(QWidget *parent) : QDialog(parent) , ui(new Ui::itemPropertyDlg) ,layout_(nullptr) ,btnGroup_(nullptr) ,_curItem(nullptr) { ui->setupUi(this); this->setWindowFlags(Qt::FramelessWindowHint | windowFlags()); initial(); } ItemPropertyDlg::~ItemPropertyDlg() { delete ui; } void ItemPropertyDlg::initial() { layout_ = new QVBoxLayout(ui->widget_button); btnGroup_ = new QButtonGroup(this); connect(ui->btn_ok,&QPushButton::clicked,this,&ItemPropertyDlg::onOkClicked); connect(ui->btn_cancel,&QPushButton::clicked,this,&ItemPropertyDlg::onCancelClicked); } void ItemPropertyDlg::loadGroupButton(QMap map) { groupInfo_ = map; for(auto &info:map) { QPushButton* btn = new QPushButton(ui->widget_button); btn->setText(info.groupName); btn->setCheckable(true); btnGroup_->addButton(btn); btnMap_.insert(info.groupName, btn); layout_->addWidget(btn); connect(btn, &QAbstractButton::clicked, [this, info](){ onGroupSelected(info.groupName); }); } layout_->addStretch(); } void ItemPropertyDlg::onOkClicked() { //todo:将属性页中的值读取到当前uuid对象 if(_curItem) { if(_curItem->getProperty() == nullptr) { //todo:弹出输入框输入名称 QMessageBox::information(NULL, QString("提示"), QString::fromWCharArray(L"对象未命名")); return; } else { curUuid_ = _curItem->getProperty()->uuid(); //使用数据uuid,数据唯一,item不唯一 } } QMap::Iterator iter; for(iter = groupViews_.begin();iter != groupViews_.end();++iter) { PropertyContentDlg* pDlg = qobject_cast(iter.value()); QMap mapPro = pDlg->getPropertyValue(); DataManager::instance().updateModelData(_curModel,curUuid_,iter.key(),mapPro); } hide(); } void ItemPropertyDlg::onCancelClicked() { hide(); } void ItemPropertyDlg::onGroupSelected(const QString& str) { if (!groupViews_.contains(str)) { createGroupView(str); } PropertyContentDlg* pDlg = qobject_cast(groupViews_[str]); if(pDlg) { QMap valueMap = groupValue_[str].mapInfo[curUuid_]; pDlg->setPropertyValue(valueMap); } ui->stackedWidget->setCurrentWidget(groupViews_[str]); } void ItemPropertyDlg::createGroupView(const QString& str) { PropertyContentDlg* contentDlg = new PropertyContentDlg(ui->stackedWidget); if(contentDlg) { contentDlg->createGroupView(groupInfo_[str]); } groupViews_.insert(str, contentDlg); ui->stackedWidget->addWidget(contentDlg); } void ItemPropertyDlg::showDlg(modelDataInfo dataInfo,QUuid uuid,GraphicsBaseItem* pItem) { groupValue_ = dataInfo.groupInfo; curUuid_ = uuid; _curModel = dataInfo.modelName; _curItem = pItem; QString firstName = groupInfo_.constBegin().key(); onGroupSelected(firstName); //打开默认显示第一个属性组 show(); }