diff --git a/.vscode/settings.json b/.vscode/settings.json
index 84e67bf..42ea91c 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -99,6 +99,7 @@
"qtablewidget": "cpp",
"qmenu": "cpp",
"qmessagebox": "cpp",
- "qaction": "cpp"
+ "qaction": "cpp",
+ "codecvt": "cpp"
}
}
\ No newline at end of file
diff --git a/MainWidget.cpp b/MainWidget.cpp
index 090b64a..3b3e541 100644
--- a/MainWidget.cpp
+++ b/MainWidget.cpp
@@ -34,7 +34,7 @@ MainWidget::MainWidget(QWidget* parent) : QWidget(parent), ui(new Ui::MainWidget
ui->btnImport->setEnabled(false);
ui->btnExport->setEnabled(false);
ui->btnBackup->setEnabled(false);
- ui->cbRepOnlySelect->setChecked(true);
+ ui->rbReplaceSelect->setChecked(true);
ui->btnRead->setFixedWidth(100);
ui->btnSave->setFixedWidth(100);
ui->btnExit->setFixedWidth(100);
@@ -642,7 +642,7 @@ void MainWidget::replace_content()
CUtil::msg(this, u8"替换前数据为空。");
return;
}
- if (ui->cbRepOnlySelect->isChecked()) {
+ if (ui->rbReplaceSelect->isChecked()) {
QModelIndexList indexList = tab_widget_->selectionModel()->selectedRows();
if (indexList.size() < 1) {
CUtil::msg(this, u8"无选择数据");
@@ -654,15 +654,18 @@ void MainWidget::replace_content()
if (e == nullptr) {
continue;
}
- auto* element = e->FirstAttribute();
- while (element) {
- QString content(element->Value());
- if (content.contains(key)) {
- content.replace(key, after);
- e->SetAttribute(element->Name(), content.toStdString().c_str());
- }
- element = element->Next();
+ replace_str(key, after, e);
+ ele_update_gui(e, indexList[i].row());
+ }
+ } else if (ui->rbRepCurPage->isChecked()) {
+ int row_count = tab_widget_->rowCount();
+ for (int i = 0; i < row_count; ++i) {
+ Element_t* e = get_element_by_row(i);
+ if (e == nullptr) {
+ continue;
}
+ replace_str(key, after, e);
+ ele_update_gui(e, i);
}
} else {
if (!CUtil::affirm(this, u8"确认", u8"确认进行全局替换吗?")) {
@@ -678,12 +681,28 @@ void MainWidget::replace_content()
element = element->Next();
}
}
- }
- xml_.get_all_elements(vec_);
- current_.clear();
- current_ = vec_;
- push_content(current_);
+ xml_.get_all_elements(vec_);
+ current_.clear();
+ current_ = vec_;
+ search();
+ }
+}
+
+void MainWidget::replace_str(const QString& pre, const QString& after, Element_t* ele)
+{
+ if (ele == nullptr) {
+ return;
+ }
+ auto* element = ele->FirstAttribute();
+ while (element) {
+ QString content(element->Value());
+ if (content.contains(pre)) {
+ content.replace(pre, after);
+ ele->SetAttribute(element->Name(), content.toStdString().c_str());
+ }
+ element = element->Next();
+ }
}
void MainWidget::backup_file()
@@ -695,8 +714,7 @@ void MainWidget::backup_file()
QString time = QDateTime::currentDateTime().toString("yyyy-MMdd-hhmmss");
if (!xml_.backup_file(fs::path(exe_path_).parent_path().append("backup").string(), time.toStdString())) {
CUtil::msg(this, u8"备份失败。");
- }
- else {
+ } else {
CUtil::msg(this, u8"备份完成。");
}
}
diff --git a/MainWidget.h b/MainWidget.h
index 154a30c..9a2c2c5 100644
--- a/MainWidget.h
+++ b/MainWidget.h
@@ -52,7 +52,7 @@ private:
protected:
void closeEvent(QCloseEvent* event);
void keyPressEvent(QKeyEvent* event);
-
+ void replace_str(const QString& pre, const QString& after, Element_t* ele);
private:
Element_t* get_element_by_key(const QString& key);
Element_t* get_element_by_row(int row);
diff --git a/MainWidget.ui b/MainWidget.ui
index 1ff5256..6e9aa9f 100644
--- a/MainWidget.ui
+++ b/MainWidget.ui
@@ -6,7 +6,7 @@
0
0
- 1211
+ 1220
805
@@ -82,9 +82,23 @@
-
-
+
- 仅替换所选
+ 所选
+
+
+
+ -
+
+
+ 当前页
+
+
+
+ -
+
+
+ 全局
@@ -269,7 +283,6 @@
btnExport
btnImport
btnBackup
- cbRepOnlySelect
edRepPre
edRepAfter
btnReplace