𰻞𰻝面
deepin
2026-08-13 14:13 大佬做研发,我们吃现成的
Reply Like 0 View the author
大佬做研发,我们吃现成的
dtkdeclarative ?
dtkdeclarative ?
jut for fun! dtkdeclarative 更厉害
建议用dtkdeclarative
https://www.gitlink.org.cn/ltree/dtkcss 代码已更新, 祝大家vibe 快乐!
Popular Ranking
ChangePopular Events
More
dtkcss — DTK CSS 样式引擎
为 DTK(Deepin ToolKit)应用增加 “用 CSS 设计界面” 的能力。一份接近 Web CSS 的样式表,
由引擎翻译为 DTK 原生的
DPalette/DStyle/DFontSizeManager以及事件驱动的状态调色板,从而兼顾明暗主题、控件状态(
hover/pressed/disabled/focus)与 DTK 视觉规范。已确认的设计决策(见
DTK-CSS-开发计划书.md)dtkcssD*)与 Qt 标准控件(QPushButton等)目录结构
构建
qmake
CMake
安装与消费(发版验证通过)
安装后产物:
/usr/include/dtkcss/*.h、libdtkcss.so.1.0.0、dtkcss.pc。第三方应用通过 pkg-config 使用:
scripts/ci-build.sh可在任意 Deepin 23 环境一键构建 + 测试;qmake 与 CMake两条构建路径均验证通过(
qmake dtkcss.pro && make)。API 用法(草案)
支持的 CSS 语法(子集)
选择器:
DButton/QPushButton(类,含基类匹配)、#id(objectName)、[attr="val"](动态属性)、DMainWindow DButton(后代)、DMainWindow > DButton(子代)、:not(QPushButton)/:not(#id)/:not([attr])(排除)、:hover/:pressed/:disabled/:focus/:checked(伪类,状态引擎)。开发状态
当前(M1–M5)已完成:
DCssStylesheet),可在不含 DTK 的环境下用tests/test_parser对解析器做单元测试;DPalette(标准 QPalette 角色 +DTK 扩展角色
ItemBackground/TextTitle/TextTips/TextWarning/FrameBorder等),支持
@media dark/light与@theme的明暗过滤;border-radius→DStyle::setFrameRadius,font-size→DFontSizeManager(T1–T11 / px),
padding(1–4 值简写)→QWidget::setContentsMargins,经
DCssApplicator的 metric 通道落地;:hover/:pressed/:focus/:checked由DCssStateEngine事件驱动切换预编译的 palette 快照(经
DPaletteHelper写入,扩展角色不丢失);:disabled编译进QPalette::Disabled组由 DTK 原生绘制;DCssStyleCache缓存每控件双主题快照,主题切换走
applyCached零重算;!important> 特异性(id > class/attr/伪类 > 类型)> 文档顺序排序应用(
tests/test_cascade覆盖);DCssApplicationHelper::reload()+QFileSystemWatcher支持样式表热重载。
>子代组合器、:not()(单复合参数,参数计入特异性);DCssStylesheet按 subject 类型建索引,
rulesFor只评估类链桶 + 泛型桶,替代全量扫描(
tests/test_selector覆盖);spacing→ 布局setSpacing。替代
dcssApplyColor的 if-else 链;dcssRegisterProperty()支持注册自定义属性(开闭原则);动态属性
[attr=...]变化自动失效并重算(DCssStyleCache::styleDirty),objectName 运行时变更用
DCssApplicationHelper::refreshWidget()手动刷新(
tests/test_registry覆盖)。tests/test_integration端到端覆盖计划书验收标准——基础背景/文字色/圆角/padding、真实
setPaletteType主题切换(@media dark免重启生效)、:pressed状态、注册/加载顺序;scripts/ci-build.sh+ GitHub Actions(deepin:beige 容器)在 CI 中跑构建与全部测试。