看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《xyz888x (ㄚ祥)》之銘言: : 最後測試後成功了=.=a : QGraphicsScene *scene; : scene = new QGraphicsScene(QRect(100,100,100,100)); : scene->addText("Hello, world!"); : scene->addLine(100,100,300,300); : graphicsView->setScene(scene); : 我把QGraphicsScene改宣告成指標形態,就可以顯示了!!! : 不知道是啥原因=.=這樣以後,我怎麼知道要宣告成指標還是普通變數!! : 煩請各位大大指教一下!!! 我不懂 QT 單看你的程式, 之前不行大概是因為你的 scene 是放在做 painting的 event handler method 內. method 一完它的 lifetime 也完了. 之後當程式 真的拿你的 scene 來用, 沒當掉就算幸運了吧... 第二次做, 是由 heap allocate, 後來程式要拿 來工作, object 還在, 可是要是 graphicsView 不幫你 delete scene 的 instance 的話, 你的 程式應該是會瘋狂 memory leak 的 一般這類情況, 都是會放在一個對應的 lifetime 的地方生成 scene, 然後把那個 scene 傳進去吧. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.155.236.82
Cloud:嗯嗯...有可能~~ 另外QT會幫忙處理new 08/12 18:39
adrianshum:所謂會處理的程度是怎樣? 這裡看來有點危險 08/12 19:04
xyz888x:看來我這樣的作法太危險了=.=可以把解決方式,再詳細 08/12 19:45
xyz888x:一點的說明嗎,謝謝!!! 08/12 19:46
xyz888x:我實在是太弱了=.=" 08/12 19:52
guest0079:你的論點沒錯,不過Qt會自已動點手腳,有時自已delete 08/12 20:02
guest0079:反而會出現問題,總之要看文件或自已試看看 08/12 20:04
adrianshum:重點還是要看文件了 :) 08/12 20:16
xyz888x:文件中,他所給的範例,並不是宣告成指標型態!! 08/12 20:31
clanguage:QT會幫忙 garbage collection 吧 08/12 21:32
adrianshum:qt應該不可能做 gc 吧,最多是搞搞 auto ptr,ref count 08/13 00:26
adrianshum:之類,但單看這裡的用法猜它的 api, 又不像是那兩種 08/13 00:27
abchu:Qt的作法是當parent(Gui的parent)被刪除的時候,所有底下的 08/15 12:42
abchu:都會一起被刪除,我想理論上setScene的動作應該有setParent 08/15 12:43
abchu:在Qt中你只要保證你的物件都有連結在一起,最上層的物件的 08/15 12:43
abchu:記憶體又有記得刪除的話應該就不會有問題 08/15 12:44