先讓我激動一會兒 [捂臉]
最近在用Qt做個程序 用來參加比賽 期間總共遇到兩次如標題的問題 也即是 莫名其妙的不觸發槽函數了 而且原因也不一樣
{先說明 我學習Qt依舊只是入門級 也許入不了大佬法眼 但是也許能幫助誰呢?}
第一種情況:
代碼執行到某一個地方的時候突然卡住了 怎么都不動彈,,, 死死的卡在174行 不知道為什么
在174行之前的代碼都能好好執行,,, 但是就是會卡在174行。。。
直到因為使用VS的習慣 不小心按下了F5... 啟動調試 終於看到了一個異常... (圖片來自網絡)
然后通過百度得知...
{{一般跟指針有關,指向不確定的內存並且試圖訪問}} --來自: https://blog.csdn.net/suli_fly/article/details/21594977
大概就是java里面的空指針異常吧。。。 然后仔細檢查了可能出現野指針的地方,,,
發現調用的對象指向的內存在執行到這里之前就被釋放了.....
接着 修改了代碼 修復了.... (除了問題之后第一件事情居然不是想到調試.... 該死QAQ... 但是Qt Creator調試是真的慢(狡辯))
具體是 本來需要實例化一個類之后給他傳一個參數的 但是死活寫不對代碼,,, 然后就想了一個偏方,在實例化完之后,再通過設置器傳遞參數進去。。。
所以 代碼是這樣的
但是 這樣就會有一個問題 就是 在NW對象實例化完成之前 代碼似乎就執行到這里了 所以 第二行實際上傳了一個NULL進去... 所以 上面會出錯 (第一行是解決了構造參數傳參的問題之后)
這里的話 解釋的不一定對 但是 NW確實是NULL 這個可以通過qDebug()來輸出地址確定
所以 偏方是不行的 最終還是弄明白了Qt怎么重寫構造函數
第二個
這個是最中二的錯誤....
這里需要如上一個問題中一樣 傳遞一個NW對象進去.... 我實在是想不通我為啥會寫個this進去(這個代碼就是在NW對象那個類里面)...
所以 造成的情況就是... 所有的信號、槽全部失效了,,, 這就導致
代碼執行到類似於這樣的地方 就完全卡死了 一直阻塞.................
具體原因的話。。。 就不知道了... 大概需要了解Qt的工作原理吧... 似乎和靜態方法不能使用this指針是一個原因