如何在QML中获取当前style对象的引用?
如何在QML中获取当前style对象的引用?
嘿,这个需求其实在Qt Quick框架里有挺直接的解决方案,分两种常见场景给你说明:
Qt Quick Controls 2(主流推荐版本)
如果你用的是Qt Quick Controls 2.x(现在大部分新项目都用这个),Qt提供了全局的Theme类型,它封装了当前应用主题的所有样式参数,包括你要的accent颜色。直接调用Theme.accent就能拿到对应的值,完美匹配你的需求:
import QtQuick.Controls 2.15 Rectangle { border.color: Theme.accent }
除了accent,Theme还提供了很多实用的样式属性,比如primaryColor(主色调)、buttonBackgroundColor(按钮背景色)等,都可以直接拿来用。
Qt Quick Controls 1(老旧项目兼容)
要是你还在维护基于Qt Quick Controls 1.x的老项目,那可以通过Style类型来访问全局样式。不过需要先导入对应的样式模块,示例代码如下:
import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 Rectangle { border.color: Style.accent }
注意哦,Controls 1现在已经被官方弃用了,建议有机会的话尽量迁移到Controls 2,功能更完善也更灵活。
另外,如果是你自己自定义的样式组件,那可以把样式对象做成单例,或者通过上下文属性注册到全局,这样就能在任意QML文件里轻松访问啦。
备注:内容来源于stack exchange,提问作者Arcadio Alivio Sincero
相关产品推荐
相关产品推荐

