最近刚把项目的界面做完,leader要求我把qml文件分类并且搞成树形结构,当时我是一脸懵逼,只能像QWidget一样将项目分成多个文件夹的形式来分类,但是我是按照QWidget的想法来实现的,所以我的界面有一块是全体共享的,类似于一个stackedwidget,他是一直存在的,也有点类似。
当我多文件搞完后,我发现原本在同级目录下,不需要import头文件便可以直接在自己的.qml文件中来实例化,但是在不同目录下就需要自己手动import(支持相对路径)
import "<DirectoryPath>" [as <Qualifier>]
这个语法类似于 一个作用域
import "./xxx.qml" as mywidget
然后你可以通过别名去访问了 mywidget.xxx{}
类似于一个ui指针。
但是我发现,在最底层的qml文件对象可以访问最外层(root)的函数,这就非常奇妙了,因为我的理解是可以访问parent,但没想到parent.parent也可以。
除此之外,我还有个问题,因为我所有的界面都存在同一个界面,于是我都import然后实例化了,首先一个问题“qml的实例化是否像QWidget一样,控件是new在堆上的”,如果是的话,岂不是我每个实例化都非常浪费内存,第二个问题就是如果我每个qml文件使用的都是同一个id,是否访问的都是同一个qml。
这就是目前非常疑惑的两个点,希望后续能够慢慢理解。