From 66cf432a98f15b698a7e1a4de4c809faad991994 Mon Sep 17 00:00:00 2001 From: gaozheng Date: Wed, 10 Jun 2026 12:26:00 +0800 Subject: [PATCH] =?UTF-8?q?fix(theme):=20=E9=80=89=E4=B8=AD=E5=BA=95?= =?UTF-8?q?=E8=89=B2=E7=BB=9F=E4=B8=80=E5=8A=A0=E5=BC=BA(=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=E6=A0=91+=E6=89=80=E6=9C=89=E5=88=97=E8=A1=A8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因: ElaListView 的 BasicSelectedAlpha 默认是半透明灰、对比度弱; 树 QSS 选中也偏淡。 设计统一的强调蓝选中底(明 #C2D9F2 / 暗 #33527A, 强对比): - applyBrandAccent: 设 BasicSelectedAlpha/BasicSelectedHoverAlpha 为该实色 → 所有 Ela 列表 选中底变清晰(并保留其 3px 强调色左竖条) - 对象树: 本地 QSS item:selected 设同款蓝 + 适配文字色, :!active 防失焦变淡 --- src/app/Theme.cpp | 7 +++++++ src/app/panels/ObjectTreePanel.cpp | 9 +++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/app/Theme.cpp b/src/app/Theme.cpp index 4dc6774..c287dce 100644 --- a/src/app/Theme.cpp +++ b/src/app/Theme.cpp @@ -464,6 +464,13 @@ void applyBrandAccent() eTheme->setThemeColor(ElaThemeType::Dark, ElaThemeType::PrimaryNormal, QColor(0x5E, 0x9B, 0xD6)); eTheme->setThemeColor(ElaThemeType::Dark, ElaThemeType::PrimaryHover, QColor(0x71, 0xA9, 0xDE)); eTheme->setThemeColor(ElaThemeType::Dark, ElaThemeType::PrimaryPress, QColor(0x4E, 0x89, 0xC4)); + + // 选中底:Ela 默认是半透明灰、对比度弱。改成清晰的强调蓝实色(明=浅蓝、暗=中深蓝), + // 让所有 Ela 列表/视图的选中行一眼可辨(与对象树 QSS 选中色 kTreeSel* 保持一致)。 + eTheme->setThemeColor(ElaThemeType::Light, ElaThemeType::BasicSelectedAlpha, QColor(0xC2, 0xD9, 0xF2)); + eTheme->setThemeColor(ElaThemeType::Light, ElaThemeType::BasicSelectedHoverAlpha, QColor(0xB1, 0xCD, 0xEF)); + eTheme->setThemeColor(ElaThemeType::Dark, ElaThemeType::BasicSelectedAlpha, QColor(0x33, 0x52, 0x7A)); + eTheme->setThemeColor(ElaThemeType::Dark, ElaThemeType::BasicSelectedHoverAlpha, QColor(0x3C, 0x5D, 0x87)); } bool isDarkTheme() diff --git a/src/app/panels/ObjectTreePanel.cpp b/src/app/panels/ObjectTreePanel.cpp index 3bafc72..5b520ae 100644 --- a/src/app/panels/ObjectTreePanel.cpp +++ b/src/app/panels/ObjectTreePanel.cpp @@ -54,10 +54,15 @@ ObjectTreePanel::ObjectTreePanel(QWidget* parent) : QWidget(parent) { const QString tag = dark ? QStringLiteral("d") : QStringLiteral("l"); const QString off = geopro::app::writeCheckboxIcon(false, border, boxBg, Qt::white, tag); const QString on = geopro::app::writeCheckboxIcon(true, accent, accent, Qt::white, tag); + // 选中底色与 Ela 列表(BasicSelectedAlpha)保持一致:明=浅蓝、暗=中深蓝;:!active 防失焦变淡。 + const QString selBg = dark ? QStringLiteral("#33527A") : QStringLiteral("#C2D9F2"); + const QString selFg = dark ? QStringLiteral("#E8F1FB") : QStringLiteral("#14385F"); tree_->setStyleSheet(QStringLiteral("QTreeView::indicator{ width:16px; height:16px; }" "QTreeView::indicator:unchecked{ image:url(%1); }" - "QTreeView::indicator:checked{ image:url(%2); }") - .arg(off, on)); + "QTreeView::indicator:checked{ image:url(%2); }" + "QTreeView::item:selected{ background:%3; color:%4; }" + "QTreeView::item:selected:!active{ background:%3; color:%4; }") + .arg(off, on, selBg, selFg)); }; applyCheckboxStyle(); QObject::connect(eTheme, &ElaTheme::themeModeChanged, tree_,