From 266be7146d8ead602ade0da582b1989f7c872e58 Mon Sep 17 00:00:00 2001 From: momen Date: Sun, 6 Jul 2025 20:14:51 +0800 Subject: [PATCH] =?UTF-8?q?update:=E5=AE=8C=E5=96=84=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mainwindow.cpp | 27 +++++++++++++++++++++++++++ src/mainwindow.h | 3 +++ 2 files changed, 30 insertions(+) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 2b45c27..afd7d9b 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -60,6 +60,11 @@ MainWindow::MainWindow(QWidget *parent) }); checkUpdates(); + // 新增:监听搜索框文本变化 + connect(ui->searchPlainTextEdit, &QPlainTextEdit::textChanged, this, [=]() { + QString keyword = ui->searchPlainTextEdit->toPlainText(); + filterAppsByKeyword(keyword); + }); initStyle(); }); @@ -196,6 +201,7 @@ void MainWindow::checkUpdates() { aptssUpdater updater; QJsonArray updateInfo = updater.getUpdateInfoAsJson(); + m_allApps = updateInfo; // 保存所有应用数据 m_model->setUpdateData(updateInfo); for (const auto &item : updateInfo) { @@ -205,6 +211,27 @@ void MainWindow::checkUpdates() } } +// 新增:根据关键字过滤应用 +void MainWindow::filterAppsByKeyword(const QString &keyword) +{ + if (keyword.trimmed().isEmpty()) { + m_model->setUpdateData(m_allApps); + return; + } + QJsonArray filtered; + for (const auto &item : m_allApps) { + QJsonObject obj = item.toObject(); + // 可根据需要匹配更多字段 + QString name = obj.value("name").toString(); + QString package = obj.value("package").toString(); + if (name.contains(keyword, Qt::CaseInsensitive) || + package.contains(keyword, Qt::CaseInsensitive)) { + filtered.append(item); + } + } + m_model->setUpdateData(filtered); +} + void MainWindow::runAptssUpgrade() { QProcess process; diff --git a/src/mainwindow.h b/src/mainwindow.h index e36db88..bc7f9d7 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -6,6 +6,7 @@ #include "applistmodel.h" #include "appdelegate.h" #include +#include // 添加头文件 QT_BEGIN_NAMESPACE namespace Ui { @@ -29,5 +30,7 @@ private: AppListModel *m_model; AppDelegate *m_delegate; QListView *listView; // 声明 QListView 指针 + QJsonArray m_allApps; // 新增:保存所有应用数据 + void filterAppsByKeyword(const QString &keyword); // 新增:搜索过滤函数声明 }; #endif // MAINWINDOW_H