From e4aec3b2e19d1ea9601bf43a6a7976dbff497862 Mon Sep 17 00:00:00 2001 From: taynpg Date: Tue, 21 May 2024 15:47:27 +0800 Subject: [PATCH] =?UTF-8?q?func=EF=BC=9A=E6=B7=BB=E5=8A=A0=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=A4=9A=E8=A1=8C=E7=9A=84=E9=80=89=E9=A1=B9=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MainWidget.cpp | 62 +++++++++++++++++++++++++++++--------------------- MainWidget.h | 3 ++- 2 files changed, 38 insertions(+), 27 deletions(-) diff --git a/MainWidget.cpp b/MainWidget.cpp index 1814e08..ef4ba98 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.10"); + setWindowTitle(u8"OneLevelXmlOpr v1.2.11"); setWindowIcon(QIcon("://resource/xml.ico")); QScreen* primaryScreen = QGuiApplication::primaryScreen(); @@ -170,7 +170,10 @@ void MainWidget::show_custom_menu() QModelIndexList indexList = tab_widget_->selectionModel()->selectedRows(); if (indexList.size() == 1) { - context_menu_->exec(QCursor::pos()); + menu_simple_->exec(QCursor::pos()); + } + else { + menu_multi_->exec(QCursor::pos()); } } @@ -447,16 +450,19 @@ void MainWidget::ele_update_gui(Element_t* target, int row) void MainWidget::init_menu() { - context_menu_ = new QMenu(); + menu_simple_ = new QMenu(); + menu_multi_ = new QMenu(); + ac_edit_property_ = new QAction(u8"编辑"); - ac_copy_curline_ = new QAction(u8"复制此项"); - ac_del_curline_ = new QAction(u8"删除此项"); + ac_copy_curline_ = new QAction(u8"复制项"); + ac_del_curline_ = new QAction(u8"删除项"); ac_copy_key_ = new QAction(u8"复制key"); - context_menu_->addAction(ac_edit_property_); - context_menu_->addAction(ac_copy_curline_); - context_menu_->addAction(ac_del_curline_); - context_menu_->addAction(ac_copy_key_); + menu_simple_->addAction(ac_edit_property_); + menu_simple_->addAction(ac_copy_curline_); + menu_simple_->addAction(ac_del_curline_); + menu_simple_->addAction(ac_copy_key_); + menu_multi_->addAction(ac_del_curline_); connect(ac_edit_property_, &QAction::triggered, this, [&]() { QTableWidgetItem* cur_item = get_current_select_item(); @@ -500,26 +506,30 @@ void MainWidget::del_select_line() if (!CUtil::affirm(this, u8"确认", u8"确认删除吗?")) { return; } - QTableWidgetItem* item = get_current_select_item(); - if (item == nullptr) { - return; - } - Element_t* target = get_element_by_key(item->text()); - if (target == nullptr) { - return; - } - xml_.del_element(target); - // TODO: 添加到界面 - tab_widget_->removeRow(item->row()); - - std::vector::iterator it; - for (it = vec_.begin(); it != vec_.end(); ++it) { - if (*it == target) { - break; + QModelIndexList indexList = tab_widget_->selectionModel()->selectedRows(); + int size = indexList.size(); + std::vector erase_row; + for (auto i = size - 1; i > -1; --i) { + Element_t* target = get_element_by_row(indexList[i].row()); + if (target == nullptr) { + continue; } + xml_.del_element(target); + tab_widget_->removeRow(indexList[i].row()); + erase_row.push_back(indexList[i].row()); + std::vector::iterator it; + for (it = vec_.begin(); it != vec_.end(); ++it) { + if (*it == target) { + break; + } + } + vec_.erase(it); } - vec_.erase(it); + // std::sort(erase_row.begin(), erase_row.end(), std::greater()); + // for (const auto& item : erase_row) { + // tab_widget_->removeRow(item); + // } search(ui->edSearchKey->text()); } diff --git a/MainWidget.h b/MainWidget.h index 563a7fa..89607bf 100644 --- a/MainWidget.h +++ b/MainWidget.h @@ -79,7 +79,8 @@ private: QTableWidgetItem* get_current_select_item(); private: - QMenu* context_menu_{}; + QMenu* menu_simple_{}; + QMenu* menu_multi_{}; QAction* ac_edit_property_{}; QAction* ac_copy_curline_{}; QAction* ac_del_curline_{};