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 快速控件 2:https://doc.qt.io/qt-5.10/qml-qtquick-controls2-button.html
- 按钮 Qt 快速控件:http://doc.qt.io/qt-5/qml-qtquick-controls-button.html
在您的情况下,您正在导入 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
}
}
我将 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 快速控件 2:https://doc.qt.io/qt-5.10/qml-qtquick-controls2-button.html
- 按钮 Qt 快速控件:http://doc.qt.io/qt-5/qml-qtquick-controls-button.html
在您的情况下,您正在导入 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
}
}