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

时间:2018-03-13 18:41:02

标签: qt qml qt5 qtquickcontrols qtquickcontrols2

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

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

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

但是,我收到了错误:

  

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

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

编辑#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

3 个答案:

答案 0 :(得分:13)

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{
}

答案 1 :(得分:0)

确保导入QtQuick.Controls.Styles

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

答案 2 :(得分:0)

您可以通过修改背景和内容项的两个可视项来自定义col按钮:

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

df <- structure(list(Unique = structure(c(2L, 2L, 2L, 1L, 1L, 3L, 2L, 
2L, 1L, 3L, 2L, 2L, 2L), .Label = c("bill", "jack", "rick"), class = "factor"), 
Value = structure(c(1L, 1L, 1L, 2L, 2L, 3L, 4L, 4L, 1L, 1L, 
1L, 1L, 1L), .Label = c("A", "B", "C", "D"), class = "factor")), row.names = c(NA, 
-13L), class = "data.frame")