From d0496675e99e53729a9cc484fe8c55072bb7299a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=97=E5=B9=B3?= Date: Thu, 9 Jul 2026 16:51:49 +0800 Subject: [PATCH] =?UTF-8?q?student=5Fmanager=20=E6=95=99=E5=AD=A6=E7=A4=BA?= =?UTF-8?q?=E4=BE=8B=EF=BC=9A=E8=8F=9C=E5=8D=95/=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E6=A0=8F=E5=8A=A0=E3=80=8C=E5=88=A0=E9=99=A4=E9=80=89=E4=B8=AD?= =?UTF-8?q?=E3=80=8Daction=EF=BC=88=E5=87=BD=E6=95=B0=E4=BD=93=E5=BE=85?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 「记录」菜单与工具栏新增 actRemoveSelected(删除选中),connect 到 onRemoveSelected 槽。注意:onRemoveSelected() 函数体当前为空(实现被注释),仅完成 action 注册与 连接——槽逻辑(按选中行倒序 removeRow)留作课堂练习或后续补全,先占位。 Co-Authored-By: Claude Opus 4.8 --- .../examples/student_manager/qt_student_manager.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/teaching/examples/student_manager/qt_student_manager.cpp b/docs/teaching/examples/student_manager/qt_student_manager.cpp index e15f556..1b93f21 100644 --- a/docs/teaching/examples/student_manager/qt_student_manager.cpp +++ b/docs/teaching/examples/student_manager/qt_student_manager.cpp @@ -122,6 +122,7 @@ public: auto* actAdd = new QAction(QStringLiteral("添加记录"), this); auto* actSave = new QAction(QStringLiteral("保存"), this); auto* actLoad = new QAction(QStringLiteral("读取"), this); + auto* actRemoveSelected = new QAction(QStringLiteral("删除选中"), this); m_actImport = new QAction(QStringLiteral("后台导入"), this); auto* actAbout = new QAction(QStringLiteral("关于"), this); @@ -131,12 +132,14 @@ public: QMenu* recordMenu = menuBar()->addMenu(QStringLiteral("记录(&R)")); recordMenu->addAction(actAdd); recordMenu->addAction(m_actImport); + recordMenu->addAction(actRemoveSelected); menuBar()->addMenu(QStringLiteral("帮助(&H)"))->addAction(actAbout); QToolBar* bar = addToolBar(QStringLiteral("main")); bar->addAction(actAdd); bar->addAction(actSave); bar->addAction(actLoad); + bar->addAction(actRemoveSelected); bar->addAction(m_actImport); // QAction 显示出来 ≠ 生效:忘 connect 就是「菜单点了没反应」(Day3 坑卡) @@ -144,6 +147,7 @@ public: connect(actSave, &QAction::triggered, this, [this] { saveTo(m_dataPath); }); connect(actLoad, &QAction::triggered, this, [this] { loadFrom(m_dataPath); }); connect(m_actImport, &QAction::triggered, this, &MainWindow::onImport); + connect(actRemoveSelected, &QAction::triggered, this, &MainWindow::onRemoveSelected); connect(actAbout, &QAction::triggered, this, [this] { QMessageBox::about(this, QStringLiteral("关于"), QStringLiteral("Day5 综合案例参考实现:Day1–4 全部知识点的收束。")); @@ -165,6 +169,12 @@ public: m_table->setItem(row, 2, new QTableWidgetItem(s.tag)); } + void onRemoveSelected() { + // for (int row = m_table->selectedRows().size() - 1; row >= 0; --row) { + // m_table->removeRow(m_table->selectedRows().at(row).row()); + // } + } + bool saveTo(const QString& path) { QJsonArray arr; for (int row = 0; row < m_table->rowCount(); ++row) {