5

例如,我有 2 个具有共同属性的不同 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 具有相同的属性,称为“颜色”,具有相同的值。

在 QSS 中,我可以使用公共属性值,例如:

QWidget {
   background: "red"
}

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

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

4

1 回答 1

10

不支持在 QML 中使用 QSS 进行自定义。但是您可以使用“样式对象”方法来设置属性并在所有 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"
}

您可以在此处找到更多信息。

于 2013-01-21T06:01:35.403 回答