#include "data_edit.h" #include "ui_data_edit.h" #include #include #include #include "../public_def.h" CDataEdit::CDataEdit(QWidget* parent) : QDialog(parent), ui(new Ui::CDataEdit) { ui->setupUi(this); // setMinimumWidth(600); setWindowTitle(u8"源属性编辑"); connect(ui->btnExit, &QPushButton::clicked, this, [&]() { close(); }); connect(ui->btnAdd, &QPushButton::clicked, this, [&]() { import_data(); }); connect(ui->btnCopy, &QPushButton::clicked, this, [&]() { QClipboard* clip = QApplication::clipboard(); clip->setText(ui->plainTextEdit->toPlainText()); }); } CDataEdit::~CDataEdit() { delete ui; } void CDataEdit::set_data(const QString& data) { data_ = data; } void CDataEdit::import_data() { QString data = ui->plainTextEdit->toPlainText(); if (data.trimmed().isEmpty()) { CUtil::msg(this, u8"内容为空"); return; } QStringList list = data.trimmed().split("\n"); for (int i = 0; i < list.size(); ++i) { const QString& item = list[i]; if (item.trimmed().isEmpty()) { continue; } tinyxml2::XMLDocument doc; doc.Parse(item.toStdString().c_str()); if (doc.Error()) { CUtil::msg(this, u8"不是合法的xml语句。"); return; } } } void CDataEdit::showEvent(QShowEvent* event) { show_before(); QDialog::showEvent(event); } void CDataEdit::show_before() { QScreen* primaryScreen = QGuiApplication::primaryScreen(); QRect screenGeometry = primaryScreen->geometry(); setMinimumWidth(screenGeometry.width() * 0.8); if (is_import_) { ui->btnCopy->setVisible(false); } else { ui->btnAdd->setVisible(false); ui->plainTextEdit->clear(); ui->plainTextEdit->appendPlainText(data_); } }