所有定制QML组件是否都应具有;项目「;作为它们的根元素?

所有定制QML组件是否都应具有;项目「;作为它们的根元素?,qml,Qml,这是一个最佳实践问题。在QML中,是否最好使用Item类型作为所有自定义QML组件的根元素,或者可以使用例如Rectangle、ColumnLayout或其他任何元素作为根元素?毕竟,Rectangle和ColumnLayout继承自Item,所以在某种意义上,如果使用其中任何一个,它仍然是Item根元素。不使用实际项目QML类型(基本类型)作为自定义组件的根元素是否存在任何已知的缺点?否。您应该使用最适合您需求的方法。对于该组件的用户(例如,等等),有一些事情需要记住,但是没有任何东西表明您应

这是一个最佳实践问题。在QML中,是否最好使用Item类型作为所有自定义QML组件的根元素,或者可以使用例如Rectangle、ColumnLayout或其他任何元素作为根元素?毕竟,Rectangle和ColumnLayout继承自Item,所以在某种意义上,如果使用其中任何一个,它仍然是Item根元素。不使用实际项目QML类型(基本类型)作为自定义组件的根元素是否存在任何已知的缺点?

否。您应该使用最适合您需求的方法。对于该组件的用户(例如,等等),有一些事情需要记住,但是没有任何东西表明您应该使用
Item
作为根元素。

是的,实际上QML中继承的根是。用于常量存储或数据源管理等非GUI相关的东西是一种过度杀伤力和反模式。我知道,考虑到QML是如何呈现和销售的,实现起来很奇怪,但事实上QML组件不必和GUI相关。QML本身并没有强迫组件成为可绘制的东西——只有QtQuick库中的特定基类型才能做到这一点。没有任何技术限制会阻止您设计web服务器QML类型,或声明SQL连接属性等。谈到web服务器,实际上有一个,它正在使用QtTest framework进行测试-100%纯QML API,不涉及可绘制项。@ratijas是的,我已经部署了。