QML Loader ...如何卸载或删除加载到Loader元素的qml页面

时间:2017-02-15 15:42:08

标签: qt qml qqmlapplicationengine

我已将MyItem.qml作为源组件加载到Loader元素上。现在我想从Loader元素中删除或卸载该页面。我试图设置来源:“”& sourceComponent:“”,也是sourceComponent:“undefined”。但它不起作用

3 个答案:

答案 0 :(得分:3)

您应该设置sourceComponent = undefinedsource = ""。 通常,我使用此代码:

Loader{
    id: loader
    function show(component) {
        sourceComponent = component;
    }
    function hide(){
        sourceComponent = undefined;
    }
}

答案 1 :(得分:0)

您可以将ServiceFactory.createRetrofitService().getUserFollowing(sessionMgr.getAuthToken()) .flatMapIterable(new Func1<UserSelfFollows, Iterable<?>>() { @Override public Iterable<?> call(UserSelfFollows userSelfFollows) { return userSelfFollows.userdata; } }) .flatMap(new Func1<UserSelfFollows, Observable<Media>>() { @Override public Observable<Media> call(UserSelfFollows user) { return ServiceFactory.createRetrofitService().getMediaOfUser(user.id, sessionMgr.getAuthToken()); } }) .toList() .subscribe(new Action1<List<Media>>() { @Override public void call(List<Media> rs) { //do something with the list of media data } }); 属性设置为active以进行卸载,或将false(默认值)设置为加载。

答案 2 :(得分:0)

您没有说出实际问题是什么,但是如果您遇到错误,而您尝试卸载的组件正在尝试访问它不应该访问的内容,那可能是因为Loader使用deleteLater()删除项目,这意味着它不会立即被删除。有关详细信息,请参阅此错误报告:

https://bugreports.qt.io/browse/QTBUG-60344