簡體   English   中英

刪除上下文屬性中的QList對象時,Qt QML應用程序崩潰

[英]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()首先列出並設置上下文屬性。 之后,我在第二個列表中執行qDeleteAllclear() 或多或少像這樣:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM