【问题标题】:Should all custom QML components have "Item" as their root element?所有自定义 QML 组件都应该将“Item”作为其根元素吗?
【发布时间】:2021-03-14 14:58:32
【问题描述】:

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

【问题讨论】:

    标签: qml


    【解决方案1】:

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

    【讨论】:

    • 是的,实际上QML中的继承根是QtObject QML Type。将Item QML Type 用于常量存储或数据源管理等非 GUI 相关的事情是一种过度杀伤和反模式。
    • 我知道,鉴于 QML 是如何呈现和营销的,这很奇怪,但事实是 QML 组件不必与图形用户界面。 QML 本身没有任何东西会强制组件成为可绘制的东西——只有 QtQuick 库中的特定基本类型才能做到这一点。没有技术限制应该阻止您设计 Web 服务器 QML 类型,或声明 SQL 连接属性等。
    • 说到网络服务器,其实有一个DBus connection plugin,它正在使用 QtTest 框架进行测试——100% 纯 QML API,不涉及可绘制项。
    • @ratijas 是的,我已经部署了QML daemons
    猜你喜欢
    • 2015-07-10
    • 2012-10-01
    • 2022-01-01
    • 2013-07-03
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多