2013-11-26 54 views
0

我正在開發一個測試用戶界面在QML和C++中,並有一個問題,其中一切似乎在使用過程中正常工作,但後來我試圖關閉窗口時出現調試錯誤。Qt在創建C++註冊後崩潰關閉QAbstractListModels

調試錯誤如下所示:「此應用程序已請求運行時以異常方式終止它。」

我已經將問題指向了我所做的QAbstractListModel派生類,因爲當我從QML代碼中移除它們(它們都導致調試錯誤)時,程序不會給我這個錯誤。有沒有人有任何想法可能會導致這種情況?

我正在使用cmake來構建程序,所以我可能會丟失一個由於某種原因只會導致出口崩潰的DLL?

任何幫助非常感謝,謝謝!

+1

而當您在調試器中運行程序時,崩潰發生在哪裏? (記得看看函數調用堆棧!) –

回答

1

最有可能您的模型有一個錯誤,但它不符合合同。查看Qt Model Test以驗證您的模型。

如果這不能讓您發現問題,請嘗試valgrind。可能創建一個更小的測試程序,或從上面valgrind Qt Model Test應用程序。

如果模型通過這一切,那麼它是不是模型...;)


其他常見的()錯誤是雙刪除(第一次由家長,然後由你),或實例刪除?而其方法正在執行(通常是一個插槽)。如果您明確刪除了QObject,請檢查它們,然後嘗試更改它們以使用deleteLater() method

噢,除非擁有者明確支持該智能指針類型(對於QObject,QPointer或QWeakPointer),否則不要使用具有父級(或其他擁有對象)的對象的智能指針。否則,有雙重刪除的風險。

+0

今天早上我做了一些更多的搞亂,並且似乎已經將問題指向了涉及cmake的問題。在Qt Creator項目中使用完全相同的模型可以正常工作,所以雖然我不確定問題到底是什麼,但我相信cmake是問題所在。如果我找出問題,我會發布解決方案。無論如何,感謝您的指導! – alowrey