[英]Qt QML application crashes when QList objects in context property are deleted
我有QML ListView以及一些由context屬性提供的模型( QList<QObject*>
):
g->appEngine->rootContext()->setContextProperty("queueStatesModel", QVariant::fromValue(this->queueStates));
一切順利,直到我嘗試清除ListView。 我這樣做是這樣的:
qDeleteAll(this->queueStates);
this->queueStates.clear();
然后我再次使用空的QList設置context屬性,這會導致應用程序崩潰。 當我執行相同操作而沒有刪除所有帶有qDeleteAll的對象時,一切正常,ListView清晰可見,應用程序沒有崩潰,但對象仍然存在,並且我丟失了指向它們的指針。
這可能是什么問題?
我找到了一些解決方案-不是很好,但是可以工作。
在QList::clear()
之前,我將指針從該列表復制到另一個QList。 然后我clear()
首先列出並設置上下文屬性。 之后,我在第二個列表中執行qDeleteAll
和clear()
。 或多或少像這樣:
this->queueStatesCache = this->queueStates;
this->queueStates.clear();
g->appEngine->rootContext()->setContextProperty("queueStatesModel", QVariant::fromValue(this->queueStates));
qDeleteAll(this->queueStatesCache);
this->queueStatesCache.clear();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.