Mat*_*ost 6 qt qml qt-quick qt5 qtquick2
我试图做'font.family'或'anchors.fill'等嵌套属性,但我不能以正常方式初始化它们,因为它打印'无法分配给不存在的属性'.相反,我被迫使用Component.onCompleted方法.怎么了?
MyButtonStyling.qml:
import QtQml 2.1
QtObject
{
property QtObject background: QtObject
{
property color pressed: "#CCCCCC"
property color enabled: "#666666"
property color disabled: "#555555"
}
}
Run Code Online (Sandbox Code Playgroud)
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
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
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
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
vpi*_*ver 12
尝试用QtObjectQML文件替换嵌套.例如,我用它替换了它BackgroundTheme.qml.这样,属性(可以正确地称为"分组属性")在绑定中正常工作,没有任何错误.
BackgroundTheme.qml
import QtQuick 2.0
QtObject {
property color pressed: "#CCCCCC"
property color enabled: "#666666"
property color disabled: "#555555"
}
Run Code Online (Sandbox Code Playgroud)
MyButtonStyling.qml
import QtQuick 2.0
QtObject {
property BackgroundTheme background: BackgroundTheme {}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2155 次 |
| 最近记录: |