QML 如何处理布尔不透明度值?

How does QML treat boolean opacity values?

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

opacity: index <= maxindex

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

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

假设它遵循与许多其他语言相同的"true is one, false is zero"心态,但我不确定。

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

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

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

QJSValue refer you to ECMA-262 specifications.

的 Qt 文档

toNumber() 这个 class 的方法应该符合 ECMA-262 的 ToNumber

Boolean : If argument is true, return 1. If argument is false, return +0.

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