QML ProgressBar无效的属性名称“样式”

时间:2020-07-29 08:00:35

标签: qt qml

我尝试使用QML ProgressBar。 这是文档 https://doc.qt.io/qt-5/qml-qtquick-controls-styles-progressbarstyle.html#details

我尝试这段代码

import QtQuick 2.14
import QtQuick.Controls 2.15
import QtQuick.Window 2.14
import QtQuick.Controls.Styles 1.4

Window {
    id: root
    width: 300; height: 300

    ProgressBar {
        value: 0.5
        style: ProgressBarStyle {
            background: Rectangle {
                radius: 2
                color: "lightgray"
                border.color: "gray"
                border.width: 1
                implicitWidth: 200
                implicitHeight: 24
            }
            progress: Rectangle {
                color: "lightsteelblue"
                border.color: "steelblue"
            }
        }
    }
}

但是我遇到错误无效的属性名称“样式” 。我做错了什么?

2 个答案:

答案 0 :(得分:3)

您正在将Qt Quick Controls 1和Qt Quick Controls 2中的样式混合在一起。要在Qt Quick Controls 2中自定义ProgressBar,请参阅this page

import QtQuick 2.12
import QtQuick.Controls 2.12

ProgressBar {
    id: control
    value: 0.5
    padding: 2

    background: Rectangle {
        implicitWidth: 200
        implicitHeight: 6
        color: "#e6e6e6"
        radius: 3
    }

    contentItem: Item {
        implicitWidth: 200
        implicitHeight: 4

        Rectangle {
            width: control.visualPosition * parent.width
            height: parent.height
            radius: 2
            color: "#17a81a"
        }
    }
}

答案 1 :(得分:0)

import QtQuick.Controls 2.15
...
import QtQuick.Controls.Styles 1.4

您在此处使用的是QtQuick的两个不同版本。您从ProgressBar导入了QtQuick.Controls 2.15,而style没有jQuery.Deferred exception: Adjusted is undefined calculateImpactOnScorecard 属性(https://doc.qt.io/qt-5/qml-qtquick-controls2-progressbar.html)。

有关差异的更多信息可以在这里找到: https://doc.qt.io/qt-5/qtquickcontrols2-differences.html