Ich versuche geschachtelte Eigenschaften wie 'font.family' oder 'anchors.fill' zu tun, aber ich kann sie nicht auf normale Weise initialisieren, weil sie 'Nicht zu nicht existierender Eigenschaft zuweisen' ausgibt. Stattdessen muss ich die Component.onCompleted-Methode verwenden. Was ist los mit dir?Wie erstellt man gruppierte/verschachtelte Eigenschaften?
MyButtonStyling.qml:
import QtQml 2.1
QtObject
{
property QtObject background: QtObject
{
property color pressed: "#CCCCCC"
property color enabled: "#666666"
property color disabled: "#555555"
}
}
main.qml:
import QtQuick 2.0
Item
{
width: 400
height: 300
MyButton
{
text: "TEST"
styling: MyButtonStyling
{
//background.enabled: "#1B2E0A" //Cannot assign to non-existent property "enabled"
Component.onCompleted:
{
background.enabled = "#1B2E0A" //Works
}
}
}
}
MyButton.qml:
import QtQuick 2.0
import QtQuick.Controls 1.0
import QtQuick.Controls.Styles 1.0
Button
{
property QtObject styling: MyButtonStyling {}
implicitWidth: 80
implicitHeight: 80
style: ButtonStyle
{
background: Item
{
Rectangle
{
anchors.fill: parent
color: control.pressed ? styling.background.pressed : control.enabled ? styling.background.enabled : styling.background.disabled
}
}
}
}
Können Sie klären genau das, was Sie mit dem obigen Code zu erreichen, sind die beabsichtigen? Es mag einen besseren Weg geben, dies zu erreichen, aber ich weiß nicht genau, was Sie zu tun versuchen. – MrEricSir