最近学习一下QML。我使用的是Qt5.9。
网上找到的例子都是比较早的版本,一些使用规则变化了,比如C++使用QNML对象。
Qt5.9主要是通过QQmlApplicationEngine,来加载Qml文件的。而网上找到的例子,多是通过QtQuick2ApplicationViewer来加载的。
QtQuick2ApplicationViewer通过rootObject(),可以直接获取到根对象。
而QQmlApplicationEngine,通过rootObjects(),获取到的是根窗口对象列表。
我琢磨了一下,通过QQmlApplicationEngine获取根对象的方式得是这样:
QList<QObject*> list = engine.rootObjects();
QQuickItem *rootItem = list[0]->findChild<QQuickItem*>("rootRect"); // 这个要自己命名