#include "actionSettingDialog.h" #include "ui_actionSettingDialog.h" #include "datahpp/dataManager.h" #include #include #include #include #include #include ActionSettingDialog::ActionSettingDialog(QWidget *parent) : QDialog(parent), ui(new Ui::ActionSettingDialog) { ui->setupUi(this); ui->buttonBox->button(QDialogButtonBox::Ok)->setText("应用"); ui->buttonBox->button(QDialogButtonBox::Cancel)->setText("放弃"); } ActionSettingDialog::~ActionSettingDialog() { delete ui; } void ActionSettingDialog::setDialogUi(QString actionName,QString elem,int statusIndex) { curStatusIndex = statusIndex; curElem = elem; curActionName = actionName; QFormLayout* formlayout = new QFormLayout(); QMap data = DataManager::getInstance()->getStatusConfigData(elem,statusIndex).actionConfig; for(const auto &i:DataManager::getInstance()->getTempFields("actionTemp",actionName)){ if(i.type == "list"){ QComboBox* combo = new QComboBox; if(i.src == "animations"){ combo->addItems(DataManager::getInstance()->getList(elem,DataManager::ListType::Anim)); } QString val; if(data.find(i.name) != data.end()) val = data[i.name]; else val = i.defaultVal; int index = combo->findText(val); combo->setCurrentIndex(index); formlayout->addRow(i.name,combo); } else if(i.type == "input"){ QString val; if(data.find(i.name) != data.end()) val = data[i.name]; else val = i.defaultVal; QLineEdit* edit = new QLineEdit(val); formlayout->addRow(i.name,edit); } } ui->widget->setLayout(formlayout); } //点击应用,保存数据 void ActionSettingDialog::on_buttonBox_accepted() { QFormLayout* formlayout = dynamic_cast(ui->widget->layout()); int itemCout = formlayout->count(); QVector fieldVec = DataManager::getInstance()->getTempFields("actionTemp",curActionName); for(int itemIndex=1;itemIndexitemAt(itemIndex); int i = itemIndex/2; if(fieldVec[i].type == "list"){ QComboBox* combo = dynamic_cast(item->widget()); dataMap[fieldVec[i].name] = combo->currentText(); std::cout<currentText())<(item->widget()); dataMap[fieldVec[i].name] = edit->text(); std::cout<text())<changeActionConfigData(curElem,curStatusIndex,dataMap); }