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

vin*_*ngo 10 qt qml qt5 qtquickcontrols qtquickcontrols2

我正在使用Qt 5.10.1和Qt Creator 4.5.1,并且样式属性在元素中永远不可用.

例如,如此处所示ButtonStyle QML Type,我想这样做:

Button {
    text: "A button"
    style: ButtonStyle {...}
}
Run Code Online (Sandbox Code Playgroud)

但是,我得到错误:

无法分配给不存在的属性"风格"

我尝试了一个矩形,进度条,我得到了同样的错误.

编辑#1:

我确实拥有所有这些进口产品.如果缺少导入,我会在ButtonStyle上得到错误,但错误是样式.

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
Run Code Online (Sandbox Code Playgroud)

eyl*_*esc 17

QML中有两种类型的按钮:

  • Button Qt Quick Controsl 2:https://doc.qt.io/qt-5.10/qml-qtquick-controls2-button.html
  • Button Qt Quick Controsl: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
Run Code Online (Sandbox Code Playgroud)

代替:

import QtQuick.Controls 2.3
Run Code Online (Sandbox Code Playgroud)

如果您使用的是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{
}
Run Code Online (Sandbox Code Playgroud)