使用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通道中绘制。我试过玩其他频道,但我没有成功。
这是我项目的图片。您可以在顶部看到一排图标按钮,下方有三个文本按钮。虽然某些图标按钮被禁用,但它们看起来都是一样的。
我已经清理了这个问题。也许不应该在圣帕特里克节后的第二天发布一个问题:)
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样式,但这不会影响图标属性的存在,该属性是从原型继承而来的。