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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动启用/禁用QML控件2.3带图标的按钮相关的知识,希望对你有一定的参考价值。

使用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

答案

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

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样式,但这不会影响图标属性的存在,该属性是从原型继承而来的。

以上是关于自动启用/禁用QML控件2.3带图标的按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何使图像填充qml控件按钮

根据活动(即可见)片段以编程方式启用或禁用按钮

根据文本控件值标记和启用/禁用连续表单上的按钮

要启用或禁用按钮上的选择组件,请单击角度材质

复选框标签启用禁用敲除js

使用自动完成填充表单时,Javascript 不启用按钮