func:添加导入导出数据(未完成)。

This commit is contained in:
2024-05-18 02:12:19 +08:00
parent 4976b5548e
commit a89ef1e677
7 changed files with 242 additions and 17 deletions

73
src/data_edit.cpp Normal file
View File

@@ -0,0 +1,73 @@
#include "data_edit.h"
#include "ui_data_edit.h"
#include <QScreen>
#include <QClipboard>
#include <tinyxml2.h>
#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_);
}
}

35
src/data_edit.h Normal file
View File

@@ -0,0 +1,35 @@
#ifndef DATA_EDIT_H
#define DATA_EDIT_H
#include <QDialog>
namespace Ui {
class CDataEdit;
}
class CDataEdit : public QDialog
{
Q_OBJECT
public:
explicit CDataEdit(QWidget* parent = nullptr);
~CDataEdit();
public:
void set_data(const QString& data);
void import_data();
protected:
void showEvent(QShowEvent* event) override;
void show_before();
public:
bool is_import_{false};
bool is_import_sucess_{false};
private:
Ui::CDataEdit* ui;
QString data_{};
};
#endif // DATA_EDIT_H

62
src/data_edit.ui Normal file
View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>CDataEdit</class>
<widget class="QDialog" name="CDataEdit">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>643</width>
<height>407</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QPlainTextEdit" name="plainTextEdit"/>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="btnCopy">
<property name="text">
<string>复制</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnAdd">
<property name="text">
<string>添加</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnExit">
<property name="text">
<string>退出</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>