CSS   发布时间:2022-04-17  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了css – 对QML进行样式化,而无需手动标记要设置样式的每个属性大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道QML不支持像小部件这样的CSS样式,而且我已经阅读了其他的样式/主题方法:

> https://qt-project.org/wiki/QmlStyling
> http://www.slideshare.net/BurkhardStubert/practical-qml-key-navigation/34

这些方法的常见之处在于,它们要求开发人员通过绑定到“样式QML文件/单例”中的属性或通过使用Loader加载不同的QML组件来指定可以设置样式的QML的部分风格名称.我想要的是像CSS中的“id”选择器而不是“类”选择器,因此单个QML文件不需要知道它们是否将被设置为更晚.

我目前的方法使所有的QML文件看起来都像这样(使用链接2中的方法):

@H_286_2@main.qml

Rectangle {
    Id: BACkground
    color: g_theme.BACkground.color 
    //g_theme is defined in root context and loaded dynamically
}

我想做的是:

@H_286_2@main.qml

Rectangle {
    Id: BACkground
    color: “green” // default color
}

然后有一个定义(或类似)的样式文件

@H_278_11@main.qml #BACkground.color: red

这可能是在这个时刻,还是为了未来的Qt版本而准备的,或者首选的造型方式是否仍然与上面链接中描述的方法类似?

解决方法

首选方式是不将样式应用于默认组件,而是从这些组件派生以创建预先定制的自定义组件.

我为我的项目做什么

首先,我创建一个集中的“主题”文件,作为JavaScript共享模块:

// myTheme.js
.pragma library;
var bgColor   = "steelblue";
var fgColor   = "darkred";
var linesize  = 2;
var roundness = 6;

接下来,我创建依赖它的自定义组件:

// MyRoundedRect.qml
import QtQuick 2.0;
import "myTheme.js" as Theme;
Rectangle {
    color: Theme.bgColor;
    border {
        width: Theme.linesize;
        color: Theme.fgColor;
    }
    radius: Theme.roundness;
}

然后,我可以使用单行代码使用我的预先设定的组件:

@H_278_11@myRoundedRect { }

这种方法有一个很大的优势:它真的是面向对象,而不是简单的剥皮.

如果您希望您甚至可以在自定义组件中添加嵌套对象,例如文本,图像,阴影等…甚至一些UI逻辑,如鼠标悬停上的颜色更改.

PS:是的,可以使用QML单例而不是JS模块,但是它需要额外的qmldir文件,并且仅从Qt 5.2支持,这可能是限制.显然,上下文属性中的C QObject也可以工作(例如,如果要从磁盘上的文件加载皮肤属性…).

大佬总结

以上是大佬教程为你收集整理的css – 对QML进行样式化,而无需手动标记要设置样式的每个属性全部内容,希望文章能够帮你解决css – 对QML进行样式化,而无需手动标记要设置样式的每个属性所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。