提问人:Johannes Schaub - litb 提问时间:11/13/2023 最后编辑:Johannes Schaub - litb 更新时间:11/13/2023 访问量:66
你怎么能在QML JavaScript中失望?
How can you downcast in QML JavaScript?
问:
Javascript 是一种动态类型语言,据我所知,它没有静态类型检查的概念......
但是QML的qmllint程序试图将静态类型检查应用于QML文档的Javascript子集,并对此代码发出警告:
[构建]警告:/home/user/project/Plot.qml:162:2:在类型“QQuickItem”[missing-property]上找不到成员“colorAccess”
[build] itemAt(index).colorAccess.value = "" + newColor
[build] ^^^^^^^^^^^
周围的元素是一个中继器
。QMLLint 查看 qmltypes 文件,发现它有一个返回 .但完整的故事是,我们只使用具有属性的委托。我们怎样才能把这些知识传授给小猫呢?itemAt
QQuickItem*
colorAccess
答:
2赞
Johannes Schaub - litb
11/13/2023
#1
对于这种情况,应根据QML文档使用-Type-assertions。不幸的是,QMLLint 的文档中没有对此进行解释,而仅在链接页面上进行了解释,据我所知 https://doc.qt.io/qt-6/qtqml-javascript-hostenvironment.html#type-annotations-and-assertionsas
因此:
(itemAt(index) as TypeOfTheDelegate).colorAccess = ...
我认为这对我们来说并没有得到回报,我们将不得不将 QMLLinter 的警告保留在我们的代码库中。
评论
QQuickItem
colorAccess
Item { .. }
colorAccess
itemAt
delegate