【发布时间】:2015-01-26 16:49:26
【问题描述】:
我有以下 QML 代码:
Rectangle {
id: mainRect
...
Rectangle{
id: listRect
...
ListModel {
id: idModel
... some stuff added
}
}
}
我想清除 idModel,使用 ListModel 的clear 方法。 像这样的东西(在 QML 内部)完美运行:
idModel.clear()
但我想在 C++ 中实现相同的目标。 尝试以下:
QQuickView view;
view.setSource(QUrl("qrc:/main.qml"));
QQuickItem* item = view.rootObject();
QObject* model = item->findChild<QObject*>("mainRect")->findChild<QObject*>("listRect")->findChild<QObject*>("idModel");
QMetaObject::invokeMethod(model,"clear");
也尝试搜索模型为
QObject* model = item->findChild<QObject*>("idModel");
QObject* model = item->findChild<QObject*>("listRect")->findChild<QObject*>("idModel");
但是上面的这些东西不起作用......我什至无法理解 - 如果 C++ 中的 findChild 方法没有找到任何东西,或者 InvokeMethod 不起作用。
谁能给我解释一下? 使用 QT5.4\QtQuick 2.4
【问题讨论】: