QML - 无法分配给不存在的 属性 "style"

QML - Cannot assign to non-existent property "style"

我将 Qt 5.10.1 与 Qt Creator 4.5.1 一起使用,样式 属性 在元素中永远不可用。

例如这里显示的 ButtonStyle QML Type ,我想做的是:

Button {
    text: "A button"
    style: ButtonStyle {...}
}

但是,我收到错误消息:

Cannot assign to non-existent property "style"

我尝试使用矩形、进度条,但我得到了同样的错误。

编辑#1:

我确实有所有这些进口商品。如果缺少导入,我会在 ButtonStyle 上收到错误,但错误在 style.

import QtQuick 2.2
import QtQuick.Controls 2.3
import QtQuick.Dialogs 1.0
import QtGraphicalEffects 1.0
import QtQuick.Shapes 1.0
import QtQuick.Layouts 1.3
import QtQuick.Controls.Styles 1.4

确保导入 QtQuick.Controls.Styles

import QtQuick.Controls.Styles 1.4
Button {
    text: "A button"
    style: ButtonStyle {...}
}

QML 中有两种类型的按钮:

在您的情况下,您正在导入 Qt QuickControls 2 按钮:import QtQuick.Controls 2.3,并且该按钮没有 style 属性。

如果你需要使用风格你必须导入:

import QtQuick.Controls 1.4

而不是:

import QtQuick.Controls 2.3

如果您使用的是 Qt Quick Controls 和 Qt Quick Controls 2 中的项目,您可以使用命名空间将它们分开:

import QtQuick.Controls 2.3 as QQC2
import QtQuick.Controls 1.4 as QQC1

QQC1.Button {
    text: "A button"
    style: ButtonStyle {...}
}

QQC2.another_item_of_Qt_Quick_Controls2{
}

您可以通过修改背景和内容项这两个视觉项来自定义 Qt Quick Controls 2 按钮:

https://doc.qt.io/qt-5/qtquickcontrols2-customize.html#customizing-button

import QtQuick 2.12
import QtQuick.Controls 2.12

Button {
    id: control
    text: qsTr("Button")

    contentItem: Text {
        text: control.text
        font: control.font
        opacity: enabled ? 1.0 : 0.3
        color: control.down ? "#17a81a" : "#21be2b"
        horizontalAlignment: Text.AlignHCenter
        verticalAlignment: Text.AlignVCenter
        elide: Text.ElideRight
    }

    background: Rectangle {
        implicitWidth: 100
        implicitHeight: 40
        opacity: enabled ? 1 : 0.3
        border.color: control.down ? "#17a81a" : "#21be2b"
        border.width: 1
        radius: 2
    }
}