在QML中设置常见属性值,例如QSS

5
例如,我有两个具有共同属性的不同 QML 元素,比如:
import QtQuick 2.0

Rectangle {
    width: 360
    height: 360

    Text {
        id: t
        color: "red"
        text: qsTr("Hello World")
        anchors.top: parent.top
    }
    TextInput {
        text: qsTr("Hello all!")
        color: "red"
        anchors.top: t.bottom

    }
}

你可以看到,Text和TextInput都有一个叫做"color"的相等属性和相等的值。

在QSS中,我可以使用通用的属性值,例如:

QWidget {
   background: "red"
}

所有属于qss小部件的QWidgets都将具有红色背景。

在QML中有设置公共属性的方法吗?

1个回答

10

在QML中,不支持使用QSS进行自定义样式。但是你可以使用“Style对象”方法来设置属性,并在所有QML文件中使用它们。

在此过程中,您需要在“Style.qml”文件中定义一个Style对象,并在根组件中实例化它,以便在整个应用程序中可用。

// Style.qml
QtObject {
    property int textSize: 20
    property color textColor: "green"
}

// root component
Rectangle {
    ...
    Style { id: style }
    ...
}

// in use
Text {
    font.pixelSize: style.textSize
    color: style.textColor
    text: "Hello World"
}

您可以在这里找到更多信息。


这并不是显而易见的,但矩形通过继承获得了QtObject的属性。 - Jay
1
@Jay,这里发生的并不是任何QtObject继承魔法。Style对象同样可以是Item或Rectangle。使其工作的原因是将Style对象放置在根目录中,使子树可以访问它。 - MrEricSir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接