1
我有一個主窗口,我在其中動態創建對象,因此在創建任何新屏幕之前,我必須先刪除最後一個屏幕中的所有對象。我用這一點,這是偉大的工作:如何刪除Qt窗口中的所有子項?
qDeleteAll(this->window->findChildren<QWidget*>());
但現在我有這個屏幕,有一些QGraphicsView
和QGraphicsScene
,和我做了他們的父母在主窗口爲好,現在我得到了一個崩潰的時候我嘗試刪除所有主窗口的子項。
所以我的問題基本上是如何避免這種崩潰?我怎樣才能輕鬆安全地刪除我所有主窗口的孩子,包括GraphicsScene
和GraphicsView
?
你的意思是'後裔'?不知道是否需要刪除Qt小部件。它們是參考計數的,所以如果您重複使用一個或多個,那麼保留它們的成本很低。 – casualcoder
QObject將在刪除時刪除其子項,但QObject系統中沒有引用計數。程序員仍然需要確保內存管理得當,這使得它更容易。 – Chris
這很好,我剛剛創建了一個QWidget作爲所有對象的父對象,並將主窗口作爲此新QWidget的父窗口,然後刪除它以刪除所有對象。 你們可以多談談這個記憶問題嗎?我應該做些什麼來保證我不會耗盡內存?我的程序運行在嵌入式系統中,所以內存管理非常重要!謝謝。 –