首页 > 解决方案 > QML 如何处理布尔不透明度值?

问题描述

我遇到了一些声明性的 QML 代码,这些代码通过使用布尔值来设置控件的不透明度:

opacity: index <= maxindex

现在这似乎可行,但我在 QML 文档中找不到任何内容,显示给定的布尔值与预期的实际值之间的隐式转换opacity

此页面涵盖了 QML 和 C++ 之间的基本类型和转换,但似乎没有详细说明 QML 本身内的布尔到实数的转换:

假设它遵循与许多其他语言相同的“真为一,假为零”的心态,但我不确定。

我很可能最终将其更改为:

opacity: (index <= maxindex) ? 1 : 0

因为这更好地表明了意图,但我想知道隐式转换是否在任何地方都能得到保证。

标签: floating-pointbooleanqmlimplicit-conversion

解决方案


QJSValue的 Qt 文档请参阅ECMA-262 规范

toNumber()此类的方法应符合ECMA-262 的ToNumber

Boolean : 如果参数为真,则返回 1。如果参数为假,则返回 +0。

所以,这样做应该是安全的。


推荐阅读