From f5c61d69404a510f80dbdda3972725dc3bf44bbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=B5=B7?= Date: Tue, 31 Mar 2026 09:18:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=B5=8B=E9=87=8F=E5=88=86?= =?UTF-8?q?=E6=9E=90=E5=8E=86=E5=8F=B2=E5=A4=84=E7=90=86=E7=BB=B4=E6=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../软件开发交互分析功能需求更新版.docx | Bin 0 -> 18990 bytes .../MeasureAnalysisHistoryForm.cpp | 30 +++++++++++++----- .../MeasureAnalysisHistoryForm.h | 2 +- src/main.cpp | 5 ++- 4 files changed, 27 insertions(+), 10 deletions(-) create mode 100644 doc/需求相关资料/软件开发交互分析功能需求更新版.docx diff --git a/doc/需求相关资料/软件开发交互分析功能需求更新版.docx b/doc/需求相关资料/软件开发交互分析功能需求更新版.docx new file mode 100644 index 0000000000000000000000000000000000000000..30ba86af21f78a114b64f35a306781070e060352 GIT binary patch literal 18990 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 literal 0 HcmV?d00001 diff --git a/src/MeasureAnalysisHistoryForm/MeasureAnalysisHistoryForm.cpp b/src/MeasureAnalysisHistoryForm/MeasureAnalysisHistoryForm.cpp index 38d5891..61fc3f0 100644 --- a/src/MeasureAnalysisHistoryForm/MeasureAnalysisHistoryForm.cpp +++ b/src/MeasureAnalysisHistoryForm/MeasureAnalysisHistoryForm.cpp @@ -35,7 +35,7 @@ MeasureAnalysisHistoryForm::~MeasureAnalysisHistoryForm() delete ui; } -void MeasureAnalysisHistoryForm::loadHistoryInfo() +void MeasureAnalysisHistoryForm::loadHistoryInfo(const QString &history_name) { auto row_count = ui->tablew_history->rowCount(); for (int row = row_count - 1; row >= 0; --row) { @@ -57,9 +57,11 @@ void MeasureAnalysisHistoryForm::loadHistoryInfo() const QString& project_filename = project_dir_path.filePath(msproject_files.first()); MeasureAnalysisProjectModel project_model; project_model.LoadProjectModel(project_filename); + const QString& project_name = project_model.GetProjectName(); + int row = ui->tablew_history->rowCount(); ui->tablew_history->insertRow(row); - ui->tablew_history->setItem(row, 0, new QTableWidgetItem(project_model.GetProjectName())); + ui->tablew_history->setItem(row, 0, new QTableWidgetItem(project_name)); ui->tablew_history->item(row, 0)->setCheckState(Qt::Unchecked); ui->tablew_history->item(row, 0)->setData(Qt::UserRole, project_filename); const QString& is_measure_complete = project_model.GetIsMeasureComplete() ? QStringLiteral(u"是") : QStringLiteral(u"否"); @@ -73,6 +75,15 @@ void MeasureAnalysisHistoryForm::loadHistoryInfo() ui->tablew_history->setItem(row, 5, new QTableWidgetItem()); ui->tablew_history->setItem(row, 6, new QTableWidgetItem()); ui->tablew_history->setItem(row, 7, new QTableWidgetItem(project_model.GetDescriptionInfo())); + + if (history_name == project_name) { + for (int col = 0; col < ui->tablew_history->columnCount(); ++col) { + QTableWidgetItem* other_item = ui->tablew_history->item(row, col); + if (other_item) { + other_item->setFlags(other_item->flags() & ~(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable)); + } + } + } } } } @@ -126,12 +137,13 @@ void MeasureAnalysisHistoryForm::onReverseSelect() void MeasureAnalysisHistoryForm::onRemoveSelectedProject() { - QMap selected_project_list; + QMap > selected_project_list; auto row_count = ui->tablew_history->rowCount(); for (int row = row_count - 1; row >= 0; --row) { if (Qt::Checked == ui->tablew_history->item(row, 0)->checkState()) { + const QString& project_name = ui->tablew_history->item(row, 0)->text(); const QString& project_filename = ui->tablew_history->item(row, 0)->data(Qt::UserRole).toString(); - selected_project_list[row] = project_filename; + selected_project_list[row] = qMakePair(project_name, project_filename); } } if (selected_project_list.isEmpty()) { @@ -142,12 +154,15 @@ void MeasureAnalysisHistoryForm::onRemoveSelectedProject() return; } for (int row : selected_project_list.keys()) { - QFileInfo project_file_info(selected_project_list.value(row)); + const QString& project_name = selected_project_list.value(row).first; + ProjectList::Instance()->RmProjectModel(project_name); + const QString& project_filename = selected_project_list.value(row).second; + QFileInfo project_file_info(project_filename); const QString& project_dir_path = project_file_info.absoluteDir().absolutePath(); QDir(project_dir_path).removeRecursively(); QDir(project_dir_path).rmdir(project_dir_path); ui->tablew_history->removeRow(row); - LOG_INFO(QStringLiteral(u"测量分析项目\"%1\"已经删除.").arg(project_file_info.baseName())); + LOG_INFO(QStringLiteral(u"测量分析项目\"%1\"已经删除.").arg(project_name)); } } @@ -225,6 +240,5 @@ void MeasureAnalysisHistoryForm::onUpdateCloseHistoryProject(const QString &proj void MeasureAnalysisHistoryForm::onUpdateNewHistoryProject(const QString &project_name) { - Q_UNUSED(project_name); - loadHistoryInfo(); + loadHistoryInfo(project_name); } diff --git a/src/MeasureAnalysisHistoryForm/MeasureAnalysisHistoryForm.h b/src/MeasureAnalysisHistoryForm/MeasureAnalysisHistoryForm.h index b7f1fdf..de08f30 100644 --- a/src/MeasureAnalysisHistoryForm/MeasureAnalysisHistoryForm.h +++ b/src/MeasureAnalysisHistoryForm/MeasureAnalysisHistoryForm.h @@ -16,7 +16,7 @@ public: ~MeasureAnalysisHistoryForm(); private: - void loadHistoryInfo(); + void loadHistoryInfo(const QString& history_name = QString()); private slots: void onQueryHistory(); void onAllSelect(); diff --git a/src/main.cpp b/src/main.cpp index ed3fcc8..f391c5c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -5,6 +5,7 @@ #include #include #include "QsLogManage.h" +#include int main(int argc, char *argv[]) { @@ -61,5 +62,7 @@ int main(int argc, char *argv[]) MainWindow w; w.showMaximized(); - return app.exec(); + int ret = app.exec(); + QThreadPool::globalInstance()->waitForDone(); + return ret; }