qml中每个组件都有自己的id,id一般情况下是文件范围内可访问,之所以说一般情况下,是因为qml采用的是 “id动态作用域” 策略,在这种策略模式下,后实例化的 qml 文件中 id 会覆盖之前创建的 id , 也就是说其实 id 是全局范围的,这在编程时会带来 “一些便利” 和 “很多麻烦”。
便利是指我们可以组织一个 id 策略来保证全局 id 唯一,这样的话我们便可以创建一些全局可访问的组件。
麻烦是指我们没法关闭这个策略,也就是说如果有其他人接手代码,那么没法保证其他人能够遵循全局唯一id的规约,而且我们还不能关闭这个策略,所以这是很大的安全隐患。
因此,我们一般认为 id 就是在本文件内有效的,即便它是全局有效,局部覆盖的。