自动启用/禁用QML控件2.3带图标的按钮

问题描述 投票:-3回答:1

使用Qt 5.10,Qt Quick2 2.10,Qt Quick Controls 2.3按钮类,我定义了一个显示图标的按钮和一个显示文本的按钮,如下所示:

Button {
    iconSource: "my_button.png"
    enabled: sometimes
}

Button {
    text: "My Button"
    enabled: sometimes
}

我希望图标按钮的行为就像它下面的文本按钮一样,用于用户交互。当它处于单击,悬停或禁用状态时,它应该适当地改变其外观。

悬停和点击模式正在运行,因为它们仅依赖于更改图标背景,而不是图标图像本身。

禁用模式不起作用。显示文本的按钮行为正确(文本和边框变为灰色),但在我的图标按钮中,禁用时没有任何变化。

有关我的图标文件的详细信息:RGB值全部为黑色(#000000),对应于我希望我的图标绘制的颜色。图像形状在Alpha通道中绘制。我试过玩其他频道,但我没有成功。

这是我项目的图片。您可以在顶部看到一排图标按钮,下方有三个文本按钮。虽然某些图标按钮被禁用,但它们看起来都是一样的。

My icons above - the icon all the way to the left is disabled, but looks just like the others; three text only buttons below, one of them disabled

qt button icons qml qt5
1个回答
0
投票

我已经清理了这个问题。也许不应该在圣帕​​特里克节后的第二天发布一个问题:)

Button类的Qt文档指示您设置iconSource属性以定义图标图像文件的URL。但是,这适用于QtQuick 1.4。

QtQuick 2.3似乎还没有文档,尽管它是当前Qt 5.10的标准。

Button(Controls.2 / Button.qml)继承列表是:

QQuickItem
  QQuickControl
    Templates.2/QQuickAbstractButton
      Templates.2/QQuickButton
        Button or {Style}/Button

Button中不再有任何iconSource属性。相反,您可以访问QQuickAbstractButton的QQ图标属性,该属性类型为QQuickIcon。在Qt Quick 2中使用图标记录在这里 - Icons in Qt Quick Controls 2 - ,以及...按钮示例!

由于Button的父类使用原型继承,因此似乎父类的属性(例如“icon”)也可以在Button类中使用。您可以查看Qt安装目录中的qml目录,以查看类声明,而无需下载整个Qt源代码。

所以,我的新Button代码如下所示:

Button {
    icon.source: "my_button.qml"
    icon.color: enabled ? "#000000" : "888888"
    enabled: sometimes
}

注意:我使用的是Fusion样式,但这不会影响图标属性的存在,该属性是从原型继承而来的。

© www.soinside.com 2019 - 2024. All rights reserved.