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

Posted

技术标签:

【中文标题】QML ProgressBar 无效的属性名称“样式”【英文标题】:QML ProgressBar invalid property name "style" 【发布时间】:2020-07-29 08:00:35 【问题描述】:

我尝试使用 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"
            
        
    


但我遇到了错误invalid property name "style"。我做错了什么?

【问题讨论】:

【参考方案1】:

您正在混合 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"
        
    

【讨论】:

【参考方案2】:
import QtQuick.Controls 2.15
...
import QtQuick.Controls.Styles 1.4

您在这里使用了两个不同版本的 QtQuick,即。您已从没有 style 属性 (https://doc.qt.io/qt-5/qml-qtquick-controls2-progressbar.html) 的 QtQuick.Controls 2.15 导入 ProgressBar

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

【讨论】:

以上是关于QML ProgressBar 无效的属性名称“样式”的主要内容,如果未能解决你的问题,请参考以下文章

Qml中的“无效的属性分配:..只读属性”

qt:按钮的无效属性名称“x”(M16)

对全局属性 QML 的无效写入

QML QtCreator 使用无效代码重新格式化组件类型的属性

Qt5 - QML:如何正确连接 ProgressBar 和 Button 以进行长时间运行的循环计算

如何在QML中使用按钮,GroupBox,文本和ProgressBar设置基本的GridLayout