From 585d0582b88bca8e1cefc740ac40217382933953 Mon Sep 17 00:00:00 2001 From: momen Date: Thu, 16 Oct 2025 17:00:42 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E6=97=A0icon=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E5=8A=A0=E8=BD=BD=E9=BB=98=E8=AE=A4=E5=9B=BE=E6=A0=87?= =?UTF-8?q?=E5=A4=B1=E6=95=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/appdelegate.cpp | 10 ++++++++++ src/aptssupdater.cpp | 7 +++++++ 2 files changed, 17 insertions(+) diff --git a/src/appdelegate.cpp b/src/appdelegate.cpp index 61f9136..83649e8 100644 --- a/src/appdelegate.cpp +++ b/src/appdelegate.cpp @@ -92,8 +92,18 @@ void AppDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, c // 检查图标路径是否存在,如果不存在则使用默认图标 QString finalIconPath = iconPath; + qDebug() << "原始图标路径:" << iconPath; if (iconPath.isEmpty() || !QFile::exists(iconPath)) { finalIconPath = ":/resources/default_icon.svg"; + qDebug() << "图标文件不存在,使用默认图标:" << finalIconPath; + } else { + qDebug() << "使用图标文件:" << finalIconPath; + } + + // 额外检查资源文件是否存在 + if (finalIconPath.startsWith(":/") && QIcon(finalIconPath).isNull()) { + qDebug() << "资源图标无法加载,使用备用默认图标"; + finalIconPath = ":/resources/default_icon.svg"; } // 如果是忽略状态,绘制灰色图标 diff --git a/src/aptssupdater.cpp b/src/aptssupdater.cpp index 44b3110..3a5b5bb 100644 --- a/src/aptssupdater.cpp +++ b/src/aptssupdater.cpp @@ -248,6 +248,7 @@ QStringList aptssUpdater::getPackageIcons() if (!dpkgProcess.waitForFinished(30000)) { // 30秒超时 qWarning() << "获取包文件列表失败:" << packageName << "(超时)"; dpkgProcess.kill(); + packageIcons << QString("%1: %2").arg(packageName, iconPath); continue; } QStringList files = QString(dpkgProcess.readAllStandardOutput()).split('\n', Qt::SkipEmptyParts); @@ -278,6 +279,7 @@ QStringList aptssUpdater::getPackageIcons() foreach (const QString &path, iconPaths) { if (QFile::exists(path)) { iconPath = path; + qDebug() << "找到图标文件:" << path; break; } } @@ -285,6 +287,7 @@ QStringList aptssUpdater::getPackageIcons() // 已经是绝对路径 if (QFile::exists(iconName)) { iconPath = iconName; + qDebug() << "使用绝对路径图标文件:" << iconName; } } break; @@ -296,9 +299,13 @@ QStringList aptssUpdater::getPackageIcons() // 如果.desktop中没有找到图标,尝试直接查找包中的图标文件 if (iconPath == ":/resources/default_icon.svg") { + qDebug() << "未在.desktop文件中找到图标,尝试直接查找包中的图标文件"; QStringList iconFiles = files.filter(QRegularExpression("/(usr/share/pixmaps|usr/share/icons|opt/apps/.*/entries/icons)/.*\\.(png|svg)$")); if (!iconFiles.isEmpty()) { iconPath = iconFiles.first(); + qDebug() << "从包中找到图标文件:" << iconPath; + } else { + qDebug() << "未在包中找到图标文件,使用默认图标"; } }