使用Qt ItemView可以通過QItemDelegate
修改項目的編輯小部件,該工具可以通過createEditor
創建自定義編輯器。誰負責刪除由委託創建的實例。什麼刪除由自定義QItemDelegate創建的小工具
我找不到任何解釋這一點,如果你只是指向相應的部分是罰款
使用Qt ItemView可以通過QItemDelegate
修改項目的編輯小部件,該工具可以通過createEditor
創建自定義編輯器。誰負責刪除由委託創建的實例。什麼刪除由自定義QItemDelegate創建的小工具
我找不到任何解釋這一點,如果你只是指向相應的部分是罰款
還好吧,我沒有跟蹤這回...它已失去焦點,並且是根據記錄代表團在整個信號鏈已被觸發後
由QAbstractItemDelegate
創建一個子類創建的編輯器部件將被刪除。它實際上是通過deleteLater()
在QAbstractItemView
中的呼叫刪除的。
有一個持久性編輯器的概念,但我沒有按照任何進一步
QObjects
一般照顧自己,只要他們的父母設置的任何文件。當您撥打createEditor()
並在第一個參數中指定父項時,父項將負責刪除它。
相關文檔可以找到here,特別是說明的第三段。
我知道Qt父子內存管理。在這種情況下,這意味着當有人想要編輯表格項目時創建的所有小部件只會在視圖(本例中的父項)被刪除時纔會清理乾淨,這聽起來不像是一個乾淨的解決方案 – 2010-09-28 09:47:53
現在理解你的關注更好一點。如果這確實是一種行爲,並且很多項目都會被編輯,那麼很多項目都會被創建並留下來。我試圖瀏覽源代碼以查看可能發生的情況,但這不是簡單的代碼瀏覽:)雖然實驗可能會有所幫助。在你的createEditor的實現中,使用一些cout信息將一個插槽連接到新的對象destroy()信號,並查看是否可以知道它們何時被刪除。此外,我會假設一次只能編輯一個項目,也許總是返回相同的項目。對不起,我找不到更多可靠的信息。 – 2010-09-28 13:12:48
我在析構函數上放了一個斷點,然後跟着它,謝謝你的幫助 – 2010-09-28 13:17:53