func:添加导入导出数据(未完成)。
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
#include <QSettings>
|
||||
#include <QFile>
|
||||
#include <QKeyEvent>
|
||||
#include "src/data_edit.h"
|
||||
#include "./ui_MainWidget.h"
|
||||
|
||||
constexpr std::size_t g_OnePage = 100;
|
||||
@@ -28,6 +29,9 @@ MainWidget::MainWidget(QWidget* parent) : QWidget(parent), ui(new Ui::MainWidget
|
||||
ui->btnSave->setEnabled(false);
|
||||
ui->edAllPage->setEnabled(false);
|
||||
ui->cbCaseSensitive->setChecked(false);
|
||||
ui->btnRead->setFixedWidth(100);
|
||||
ui->btnSave->setFixedWidth(100);
|
||||
ui->btnExit->setFixedWidth(100);
|
||||
|
||||
connect(ui->btnSelectFile, &QPushButton::clicked, this, [&]() {
|
||||
QString file = CUtil::select_file(this, u8"请选择xml文件", u8"XML(*.xml);;所有文件 (*)");
|
||||
@@ -42,10 +46,21 @@ MainWidget::MainWidget(QWidget* parent) : QWidget(parent), ui(new Ui::MainWidget
|
||||
connect(ui->btnSave, &QPushButton::clicked, this, [&]() { save(); });
|
||||
connect(ui->btnExit, &QPushButton::clicked, this, [&]() { QApplication::exit(0); });
|
||||
connect(ui->btnReset, &QPushButton::clicked, this, &MainWidget::reset);
|
||||
connect(ui->btnExport, &QPushButton::clicked, this, &MainWidget::copy_multi_data);
|
||||
connect(ui->btnPagePre, &QPushButton::clicked, this, [&]() {
|
||||
unsigned int cur = ui->edCurPage->text().toUInt();
|
||||
push_content(current_, cur - 1);
|
||||
});
|
||||
connect(ui->btnImport, &QPushButton::clicked, this, [&]() {
|
||||
CDataEdit edit;
|
||||
edit.is_import_ = true;
|
||||
edit.exec();
|
||||
if (edit.is_import_sucess_) {
|
||||
CUtil::msg(this, u8"导入成功");
|
||||
} else {
|
||||
CUtil::msg(this, u8"导入失败");
|
||||
}
|
||||
});
|
||||
connect(ui->btnPageNext, &QPushButton::clicked, this, [&]() {
|
||||
unsigned int cur = ui->edCurPage->text().toUInt();
|
||||
push_content(current_, cur + 1);
|
||||
@@ -302,7 +317,7 @@ void MainWidget::item_changed_handle(QTableWidgetItem* item)
|
||||
int col = item->column();
|
||||
|
||||
QString xml_key = tab_widget_->item(row, 0)->text();
|
||||
Element_t* result = get_element_bykey(xml_key);
|
||||
Element_t* result = get_element_by_key(xml_key);
|
||||
if (result == nullptr) {
|
||||
return;
|
||||
}
|
||||
@@ -329,7 +344,7 @@ void MainWidget::copy_select_line()
|
||||
return;
|
||||
}
|
||||
|
||||
Element_t* target = get_element_bykey(cur_item->text());
|
||||
Element_t* target = get_element_by_key(cur_item->text());
|
||||
if (target == nullptr) {
|
||||
return;
|
||||
}
|
||||
@@ -423,7 +438,7 @@ void MainWidget::init_menu()
|
||||
return;
|
||||
}
|
||||
|
||||
Element_t* target = get_element_bykey(cur_item->text());
|
||||
Element_t* target = get_element_by_key(cur_item->text());
|
||||
if (target == nullptr) {
|
||||
return;
|
||||
}
|
||||
@@ -463,7 +478,7 @@ void MainWidget::del_select_line()
|
||||
if (item == nullptr) {
|
||||
return;
|
||||
}
|
||||
Element_t* target = get_element_bykey(item->text());
|
||||
Element_t* target = get_element_by_key(item->text());
|
||||
if (target == nullptr) {
|
||||
return;
|
||||
}
|
||||
@@ -489,7 +504,7 @@ Element_t* MainWidget::get_current_select_key()
|
||||
if (item == nullptr) {
|
||||
return ret;
|
||||
}
|
||||
ret = get_element_bykey(item->text());
|
||||
ret = get_element_by_key(item->text());
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -515,7 +530,7 @@ void MainWidget::reset()
|
||||
push_content(current_);
|
||||
}
|
||||
|
||||
tinyxml2::XMLElement* MainWidget::get_element_bykey(const QString& key)
|
||||
tinyxml2::XMLElement* MainWidget::get_element_by_key(const QString& key)
|
||||
{
|
||||
Element_t* ret = nullptr;
|
||||
for (const auto& ele : current_) {
|
||||
@@ -530,6 +545,17 @@ tinyxml2::XMLElement* MainWidget::get_element_bykey(const QString& key)
|
||||
return ret;
|
||||
}
|
||||
|
||||
Element_t* MainWidget::get_element_by_row(int row)
|
||||
{
|
||||
Element_t* ret = nullptr;
|
||||
if (row < 0 || !tab_widget_ || row >= tab_widget_->rowCount()) {
|
||||
return ret;
|
||||
}
|
||||
QTableWidgetItem* item = tab_widget_->item(row, 0);
|
||||
ret = get_element_by_key(item->text());
|
||||
return ret;
|
||||
}
|
||||
|
||||
void MainWidget::sort_by_repeat(std::vector<Element_t*>& vec)
|
||||
{
|
||||
struct SElement_t {
|
||||
@@ -564,4 +590,30 @@ void MainWidget::sort_by_repeat(std::vector<Element_t*>& vec)
|
||||
for (const auto& item : turn_vec) {
|
||||
vec.push_back(item.ele);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MainWidget::copy_multi_data()
|
||||
{
|
||||
if (tab_widget_ == nullptr) {
|
||||
return;
|
||||
}
|
||||
QModelIndexList indexList = tab_widget_->selectionModel()->selectedRows();
|
||||
if (indexList.size() < 1) {
|
||||
CUtil::msg(this, u8"无选择数据");
|
||||
return;
|
||||
}
|
||||
QString ret;
|
||||
for (int i = 0; i < indexList.size(); ++i) {
|
||||
Element_t* e = get_element_by_row(indexList[i].row());
|
||||
if (e == nullptr) {
|
||||
continue;
|
||||
}
|
||||
tinyxml2::XMLPrinter printer;
|
||||
e->Accept(&printer);
|
||||
ret.append(printer.CStr());
|
||||
}
|
||||
|
||||
CDataEdit edit;
|
||||
edit.set_data(ret);
|
||||
edit.exec();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user