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);
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<Element_t*>::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<int> 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<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());
}

View File

@ -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_{};