func:添加删除多行的选项。

This commit is contained in:
taynpg 2024-05-21 15:47:27 +08:00
parent 2a7af82b0b
commit e4aec3b2e1
2 changed files with 38 additions and 27 deletions

View File

@ -16,7 +16,7 @@ MainWidget::MainWidget(QWidget* parent) : QWidget(parent), ui(new Ui::MainWidget
{ {
ui->setupUi(this); ui->setupUi(this);
setWindowTitle(u8"OneLevelXmlOpr v1.2.10"); setWindowTitle(u8"OneLevelXmlOpr v1.2.11");
setWindowIcon(QIcon("://resource/xml.ico")); setWindowIcon(QIcon("://resource/xml.ico"));
QScreen* primaryScreen = QGuiApplication::primaryScreen(); QScreen* primaryScreen = QGuiApplication::primaryScreen();
@ -170,7 +170,10 @@ void MainWidget::show_custom_menu()
QModelIndexList indexList = tab_widget_->selectionModel()->selectedRows(); QModelIndexList indexList = tab_widget_->selectionModel()->selectedRows();
if (indexList.size() == 1) { 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() void MainWidget::init_menu()
{ {
context_menu_ = new QMenu(); menu_simple_ = new QMenu();
menu_multi_ = new QMenu();
ac_edit_property_ = new QAction(u8"编辑"); ac_edit_property_ = new QAction(u8"编辑");
ac_copy_curline_ = new QAction(u8"复制此项"); ac_copy_curline_ = new QAction(u8"复制");
ac_del_curline_ = new QAction(u8"删除"); ac_del_curline_ = new QAction(u8"删除");
ac_copy_key_ = new QAction(u8"复制key"); ac_copy_key_ = new QAction(u8"复制key");
context_menu_->addAction(ac_edit_property_); menu_simple_->addAction(ac_edit_property_);
context_menu_->addAction(ac_copy_curline_); menu_simple_->addAction(ac_copy_curline_);
context_menu_->addAction(ac_del_curline_); menu_simple_->addAction(ac_del_curline_);
context_menu_->addAction(ac_copy_key_); menu_simple_->addAction(ac_copy_key_);
menu_multi_->addAction(ac_del_curline_);
connect(ac_edit_property_, &QAction::triggered, this, [&]() { connect(ac_edit_property_, &QAction::triggered, this, [&]() {
QTableWidgetItem* cur_item = get_current_select_item(); QTableWidgetItem* cur_item = get_current_select_item();
@ -500,26 +506,30 @@ void MainWidget::del_select_line()
if (!CUtil::affirm(this, u8"确认", u8"确认删除吗?")) { if (!CUtil::affirm(this, u8"确认", u8"确认删除吗?")) {
return; 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: 添加到界面 QModelIndexList indexList = tab_widget_->selectionModel()->selectedRows();
tab_widget_->removeRow(item->row()); int size = indexList.size();
std::vector<int> erase_row;
std::vector<Element_t*>::iterator it; for (auto i = size - 1; i > -1; --i) {
for (it = vec_.begin(); it != vec_.end(); ++it) { Element_t* target = get_element_by_row(indexList[i].row());
if (*it == target) { if (target == nullptr) {
break; continue;
} }
xml_.del_element(target);
tab_widget_->removeRow(indexList[i].row());
erase_row.push_back(indexList[i].row());
std::vector<Element_t*>::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<int>());
// for (const auto& item : erase_row) {
// tab_widget_->removeRow(item);
// }
search(ui->edSearchKey->text()); search(ui->edSearchKey->text());
} }

View File

@ -79,7 +79,8 @@ private:
QTableWidgetItem* get_current_select_item(); QTableWidgetItem* get_current_select_item();
private: private:
QMenu* context_menu_{}; QMenu* menu_simple_{};
QMenu* menu_multi_{};
QAction* ac_edit_property_{}; QAction* ac_edit_property_{};
QAction* ac_copy_curline_{}; QAction* ac_copy_curline_{};
QAction* ac_del_curline_{}; QAction* ac_del_curline_{};