From 52d3da20ad04f4686099b1c68551e75534161ed1 Mon Sep 17 00:00:00 2001 From: taynpg Date: Wed, 31 Jul 2024 11:41:13 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E4=BF=AE=E6=AD=A3=E5=88=B7?= =?UTF-8?q?=E6=96=B0=E7=95=8C=E9=9D=A2=E9=80=BB=E8=BE=91=EF=BC=8C=E6=9B=B4?= =?UTF-8?q?=E6=94=B9=E6=9B=BF=E6=8D=A2=E7=BB=93=E6=9E=9C=E5=90=8E=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E6=90=9C=E7=B4=A2key=E5=88=B7=E6=96=B0=E8=80=8C?= =?UTF-8?q?=E4=B8=8D=E6=98=AF=E6=9B=BF=E6=8D=A2=E5=90=8E=E7=9A=84key?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 2 +- CMakeLists.txt | 7 ++++--- MainWidget.cpp | 28 +++++++++++++++++++++++++--- src/attribute_edit.cpp | 2 +- 4 files changed, 31 insertions(+), 8 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index fdf4b53..93b07de 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -19,7 +19,7 @@ "visualizerFile": "${workspaceRoot}/.vscode/qt6.natvis" }, "cmake.environment": { - "PATH": "${env:PATH};C:/Qt/6.6.3/6.6.3/msvc2019_64/bin" + "PATH": "${env:PATH};C:/Qt/6.6.3/msvc2019_64/bin" }, "cmake.options.statusBarVisibility": "visible", "cmake.generator": "Ninja", diff --git a/CMakeLists.txt b/CMakeLists.txt index b27cf89..51e6212 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,9 +30,10 @@ set(PROJECT_SOURCES ) if (MSVC) -if(${QT_VERSION_MAJOR} LESS 6) - add_compile_options(/source-charset:utf-8) -endif() +# if(${QT_VERSION_MAJOR} LESS 6) +# add_compile_options(/source-charset:utf-8) +# endif() +add_compile_options(/source-charset:utf-8) add_compile_options(/EHsc) add_compile_options(/wd4267) add_compile_options(-D_CRT_SECURE_NO_WARNINGS) diff --git a/MainWidget.cpp b/MainWidget.cpp index 78ca110..ce0f47e 100644 --- a/MainWidget.cpp +++ b/MainWidget.cpp @@ -16,7 +16,7 @@ MainWidget::MainWidget(QWidget* parent) : QWidget(parent), ui(new Ui::MainWidget { ui->setupUi(this); - setWindowTitle(u8"OneLevelXmlOpr v1.2.16"); + setWindowTitle(u8"OneLevelXmlOpr v1.2.17"); setWindowIcon(QIcon("://resource/xml.ico")); QScreen* primaryScreen = QGuiApplication::primaryScreen(); @@ -457,14 +457,32 @@ bool MainWidget::edit_property(Element_t* target, int row) return true; } + +// ele_update_gui 的 row 参数暂时废弃,无意义。 void MainWidget::ele_update_gui(Element_t* target, int row) { if (tab_widget_ == nullptr) { return; } + + QString tkey = QString::fromLocal8Bit(target->Attribute(keys_[0].c_str())); + int target_row = -1; + // 获取当前显示的内容,查找更改。 + int cur_show_cnt = tab_widget_->rowCount(); + for (int i = 0; i < cur_show_cnt; ++i) { + if (tab_widget_->item(i, 0)->text() == tkey) { + target_row = i; + break; + } + } + + if (target_row < 0) { + return; + } + for (auto i = 0; i < keys_.size(); ++i) { const char* v = target->Attribute(keys_[i].c_str()); - auto* qitem = tab_widget_->item(row, i); + auto* qitem = tab_widget_->item(target_row, i); qitem->setText(QString(v)); } } @@ -694,6 +712,7 @@ void MainWidget::replace_content(bool is_common) return; } auto handle = [&](const std::vector& vec, bool is_search) { + //qDebug() << "要处理的数量为:" << vec.size(); for (auto& item : vec) { if (is_common) { replace_str(key, after, item->element_); @@ -722,7 +741,7 @@ void MainWidget::replace_content(bool is_common) xml_.get_all_elements(vec_); current_.clear(); current_ = vec_; - search(ui->edRepAfter->text()); + search(ui->edSearchKey->text()); } else if (ui->rbRepCurPage->isChecked()) { get_related_elements(vec, AREA_CUR_PAGE); handle(vec, false); @@ -763,7 +782,10 @@ void MainWidget::replace_str(Element_t* ele, const QString& rg, const QString& a for (auto i = 0; i < keys_.size(); ++i) { auto* value = ele->Attribute(keys_[i].c_str()); QString content(value); + // qDebug() << content; content.replace(rx, after); + //qDebug() << content; + //qDebug() << "\n"; ele->SetAttribute(keys_[i].c_str(), content.toStdString().c_str()); } } diff --git a/src/attribute_edit.cpp b/src/attribute_edit.cpp index 8716ede..b2104c3 100644 --- a/src/attribute_edit.cpp +++ b/src/attribute_edit.cpp @@ -22,7 +22,7 @@ void CAttributeEdit::handle_ok() for (int i = 0; i < row; ++i) { QString key = table_->item(i, 0)->text(); QString value = table_->item(i, 1)->text(); - property_.emplace_back(key.toStdString().c_str(), value.toStdString().c_str()); + property_.emplace_back(key.toLocal8Bit().constData(), value.toLocal8Bit().constData()); } is_ok_ = true; close();