fix(theme): 选中底色统一加强(对象树+所有列表)

根因: ElaListView 的 BasicSelectedAlpha 默认是半透明灰、对比度弱; 树 QSS 选中也偏淡。
设计统一的强调蓝选中底(明 #C2D9F2 / 暗 #33527A, 强对比):
- applyBrandAccent: 设 BasicSelectedAlpha/BasicSelectedHoverAlpha 为该实色 → 所有 Ela 列表
  选中底变清晰(并保留其 3px 强调色左竖条)
- 对象树: 本地 QSS item:selected 设同款蓝 + 适配文字色, :!active 防失焦变淡
This commit is contained in:
gaozheng 2026-06-10 12:26:00 +08:00
parent 934e25be54
commit 66cf432a98
2 changed files with 14 additions and 2 deletions

View File

@ -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()

View File

@ -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_,