gpt4 book ai didi

qml - 无法在单例中创建某些 QML 类型

转载 作者:行者123 更新时间:2023-12-02 12:37:16 28 4
gpt4 key购买 nike

我有一个用于样式定义的 QML 单例,定义如下:

pragma Singleton
import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Controls.Styles 1.1

QtObject {
property ProgressBarStyle progressBarErrorStyle: ProgressBarStyle {
background: Rectangle {
radius: 2
color: "lightgray"
border.color: "gray"
border.width: 1
implicitWidth: 200
implicitHeight: 20
}
progress: Rectangle {
color: "orangered"
border.color: "red"
}
}
}

我可以导入该对象并使用它,但是 progressBarErrorStyle 始终指定为 ProgressBarStyle_QMLTYPE_17 类型。如果我将其更改为 Rectangle,那么它会正确键入为 QQuickRectangle

QtQuick.Controls.Styles 导入定义了 ProgressBarStyle,并且在 QtCreator 中我没有收到任何语法错误...那么为什么我的对象给出了错误的类型在运行时?

最佳答案

您应该使用Component作为属性类型:

import QtQuick 2.2
import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 1.2

Rectangle {
property Component progressBarErrorStyle: ProgressBarStyle {
background: Rectangle {
radius: 2
color: "lightgray"
border.color: "gray"
border.width: 1
implicitWidth: 200
implicitHeight: 20
}
progress: Rectangle {
color: "orangered"
border.color: "red"
}
}

ProgressBar {
id: progressBar

NumberAnimation {
target: progressBar
property: "value"
to: 1
running: true
duration: 2000
}

style: progressBarErrorStyle
}
}

样式组件在 Loader 项内部使用,它们在需要时创建组件的实例,就像 Qt Quick 的 ListView 中的委托(delegate)一样。 ,例如。

关于qml - 无法在单例中创建某些 QML 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23210427/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com