12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #include "actionSettingDialog.h"
- #include "ui_actionSettingDialog.h"
- #include <QPushButton>
- #include <QFormLayout>
- #include <QComboBox>
- #include <QLineEdit>
- #include <iostream>
- #include <QLabel>
- 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(QVector<ReadJsonSrc::Fields> fields, QMap<QString, QString> data,QStringList listItems)
- {
- fieldVec = fields;
- QFormLayout* formlayout = new QFormLayout();
- for(const auto &i:fields){
- if(i.type == "list"){
- QComboBox* combo = new QComboBox;
- combo->addItems(listItems);
- 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);
- connect(combo,SIGNAL(currentTextChanged(QString)),this,SLOT(onComboBoxTextChanged(QString)));
- 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);
- connect(edit,SIGNAL(editingFinished()),this,SLOT(onLineEditTextChanged()));
- formlayout->addRow(i.name,edit);
- }
- }
- ui->widget->setLayout(formlayout);
- }
- void ActionSettingDialog::onComboBoxTextChanged(QString arg)
- {
- QComboBox *box = dynamic_cast<QComboBox*>(this->sender());
- QFormLayout* formlayout = dynamic_cast<QFormLayout*>(ui->widget->layout());
- QLabel *label = dynamic_cast<QLabel*>(formlayout->labelForField(box));
- std::cout<<qPrintable(label->text())<<": "<<qPrintable(arg)<<std::endl;
- }
- void ActionSettingDialog::onLineEditTextChanged()
- {
- QLineEdit *edit = dynamic_cast<QLineEdit*>(this->sender());
- QFormLayout* formlayout = dynamic_cast<QFormLayout*>(ui->widget->layout());
- QLabel *label = dynamic_cast<QLabel*>(formlayout->labelForField(edit));
- std::cout<<qPrintable(label->text())<<": "<<qPrintable(edit->text())<<std::endl;
- }
- //点击应用,保存数据
- void ActionSettingDialog::on_buttonBox_accepted()
- {
- QFormLayout* formlayout = dynamic_cast<QFormLayout*>(ui->widget->layout());
- int itemCout = formlayout->count();
- for(int itemIndex=1;itemIndex<itemCout;itemIndex+=2){
- QLayoutItem* item = formlayout->itemAt(itemIndex);
- int i = itemIndex/2;
- if(fieldVec[i].type == "list"){
- QComboBox* combo = dynamic_cast<QComboBox*>(item->widget());
- dataMap[fieldVec[i].name] = combo->currentText();
- std::cout<<qPrintable(fieldVec[i].name)<<": "<<qPrintable(combo->currentText())<<std::endl;
- }
- else if(fieldVec[i].type == "input"){
- QLineEdit* edit = dynamic_cast<QLineEdit*>(item->widget());
- dataMap[fieldVec[i].name] = edit->text();
- std::cout<<qPrintable(fieldVec[i].name)<<": "<<qPrintable(edit->text())<<std::endl;
- }
- }
- }
|