refactor/pure-qt-ui #3
|
|
@ -456,6 +456,18 @@ void applyTheme(QApplication& app)
|
||||||
applyThemeMode(app, false);
|
applyThemeMode(app, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void applyBrandAccent()
|
||||||
|
{
|
||||||
|
// 品牌蓝强调色。亮色用主色 #2D6CB5;暗色用同色相提亮版 #5E9BD6(深底上对比足够)。
|
||||||
|
// Hover 略亮、Press 略深,三态成体系。设给 Ela 的 Primary,全 UI 选中/激活统一这一套。
|
||||||
|
eTheme->setThemeColor(ElaThemeType::Light, ElaThemeType::PrimaryNormal, QColor(0x2D, 0x6C, 0xB5));
|
||||||
|
eTheme->setThemeColor(ElaThemeType::Light, ElaThemeType::PrimaryHover, QColor(0x3E, 0x7B, 0xC0));
|
||||||
|
eTheme->setThemeColor(ElaThemeType::Light, ElaThemeType::PrimaryPress, QColor(0x24, 0x5A, 0x9B));
|
||||||
|
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));
|
||||||
|
}
|
||||||
|
|
||||||
bool isDarkTheme()
|
bool isDarkTheme()
|
||||||
{
|
{
|
||||||
return eTheme->getThemeMode() == ElaThemeType::Dark;
|
return eTheme->getThemeMode() == ElaThemeType::Dark;
|
||||||
|
|
|
||||||
|
|
@ -90,6 +90,10 @@ void applyThemeMode(QApplication& app, bool dark);
|
||||||
// 浅色主题快捷入口(= applyThemeMode(app,false))。经典壳启动调用一次。
|
// 浅色主题快捷入口(= applyThemeMode(app,false))。经典壳启动调用一次。
|
||||||
void applyTheme(QApplication& app);
|
void applyTheme(QApplication& app);
|
||||||
|
|
||||||
|
// 统一强调色:把 ElaTheme 主色(Primary)设为本项目品牌蓝(亮/暗各一档),让所有 Ela 原生控件
|
||||||
|
// (选中/激活/标题栏强调) 与本项目 QSS 共用同一套蓝,消除"多种蓝打架"。在 eApp->init() 后调一次。
|
||||||
|
void applyBrandAccent();
|
||||||
|
|
||||||
// 当前 ElaTheme 是否暗色(供内联样式判断)。
|
// 当前 ElaTheme 是否暗色(供内联样式判断)。
|
||||||
bool isDarkTheme();
|
bool isDarkTheme();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -155,7 +155,7 @@ TopBar::TopBar(QWidget* parent) : QWidget(parent) {
|
||||||
// 工作空间切换器(Fluent ElaToolButton;数据驱动,初始占位文本待 setWorkspaces 填充)。
|
// 工作空间切换器(Fluent ElaToolButton;数据驱动,初始占位文本待 setWorkspaces 填充)。
|
||||||
wsBtn_ = new ElaToolButton(this);
|
wsBtn_ = new ElaToolButton(this);
|
||||||
wsBtn_->setObjectName(QStringLiteral("wsSwitcher"));
|
wsBtn_->setObjectName(QStringLiteral("wsSwitcher"));
|
||||||
wsBtn_->setIcon(makeGlyph(Glyph::Workspace, QColor("#2D6CB5"), kWorkspaceIcon));
|
setThemedGlyph(wsBtn_, Glyph::Workspace, kWorkspaceIcon); // 中性主题色(蓝只留给选中/激活)
|
||||||
wsBtn_->setIconSize(QSize(kWorkspaceIcon, kWorkspaceIcon));
|
wsBtn_->setIconSize(QSize(kWorkspaceIcon, kWorkspaceIcon));
|
||||||
wsBtn_->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
wsBtn_->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
||||||
wsBtn_->setPopupMode(QToolButton::InstantPopup);
|
wsBtn_->setPopupMode(QToolButton::InstantPopup);
|
||||||
|
|
@ -171,7 +171,7 @@ TopBar::TopBar(QWidget* parent) : QWidget(parent) {
|
||||||
// 项目切换器(Fluent ElaToolButton;数据驱动)。
|
// 项目切换器(Fluent ElaToolButton;数据驱动)。
|
||||||
projBtn_ = new ElaToolButton(this);
|
projBtn_ = new ElaToolButton(this);
|
||||||
projBtn_->setObjectName(QStringLiteral("wsSwitcher"));
|
projBtn_->setObjectName(QStringLiteral("wsSwitcher"));
|
||||||
projBtn_->setIcon(makeGlyph(Glyph::Folder, QColor("#2D6CB5"), kWorkspaceIcon));
|
setThemedGlyph(projBtn_, Glyph::Folder, kWorkspaceIcon); // 中性主题色
|
||||||
projBtn_->setIconSize(QSize(kWorkspaceIcon, kWorkspaceIcon));
|
projBtn_->setIconSize(QSize(kWorkspaceIcon, kWorkspaceIcon));
|
||||||
projBtn_->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
projBtn_->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
||||||
projBtn_->setPopupMode(QToolButton::InstantPopup);
|
projBtn_->setPopupMode(QToolButton::InstantPopup);
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include "repo/RepoTypes.hpp"
|
#include "repo/RepoTypes.hpp"
|
||||||
|
|
||||||
class QToolButton;
|
class ElaToolButton;
|
||||||
|
|
||||||
namespace geopro::app {
|
namespace geopro::app {
|
||||||
|
|
||||||
|
|
@ -28,8 +28,8 @@ signals:
|
||||||
void logoutRequested(); // 头像菜单「退出登录」
|
void logoutRequested(); // 头像菜单「退出登录」
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QToolButton* wsBtn_ = nullptr;
|
ElaToolButton* wsBtn_ = nullptr;
|
||||||
QToolButton* projBtn_ = nullptr;
|
ElaToolButton* projBtn_ = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace geopro::app
|
} // namespace geopro::app
|
||||||
|
|
|
||||||
|
|
@ -1032,6 +1032,7 @@ int main(int argc, char* argv[])
|
||||||
// ElaApplication:Fluent 主题/字体/动画基建。无条件初始化——登录窗与各面板已 Ela 化,
|
// ElaApplication:Fluent 主题/字体/动画基建。无条件初始化——登录窗与各面板已 Ela 化,
|
||||||
// 两种壳都需要它(登录发生在选壳之前)。Ela 控件跟随 ElaTheme;标准控件仍由下面 QSS 接管。
|
// 两种壳都需要它(登录发生在选壳之前)。Ela 控件跟随 ElaTheme;标准控件仍由下面 QSS 接管。
|
||||||
eApp->init();
|
eApp->init();
|
||||||
|
geopro::app::applyBrandAccent(); // 统一品牌强调色(Ela Primary),全 UI 选中/激活一套蓝
|
||||||
|
|
||||||
// 专业主题(Fusion + 调色板 + 全局样式表):标准控件外观,登录窗与工作台共用。
|
// 专业主题(Fusion + 调色板 + 全局样式表):标准控件外观,登录窗与工作台共用。
|
||||||
// 跟随 ElaTheme 初始模式(可能随系统为暗),使登录窗与标准控件明暗一致(review M2)。
|
// 跟随 ElaTheme 初始模式(可能随系统为暗),使登录窗与标准控件明暗一致(review M2)。
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ ObjectTreePanel::ObjectTreePanel(QWidget* parent) : QWidget(parent) {
|
||||||
|
|
||||||
tree_ = new ElaTreeView(this); // Fluent 树视图(自绘展开/折叠指示,随主题)
|
tree_ = new ElaTreeView(this); // Fluent 树视图(自绘展开/折叠指示,随主题)
|
||||||
tree_->setHeaderHidden(true);
|
tree_->setHeaderHidden(true);
|
||||||
|
tree_->setIndentation(14); // 默认缩进偏大,收紧更紧凑协调
|
||||||
model_ = new QStandardItemModel(tree_);
|
model_ = new QStandardItemModel(tree_);
|
||||||
tree_->setModel(model_);
|
tree_->setModel(model_);
|
||||||
lay->addWidget(tree_, 1);
|
lay->addWidget(tree_, 1);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue