1. 程式人生 > >Qt 遇到的一些小問題

Qt 遇到的一些小問題

1.在函式中,若對一個控制元件進行setEnabled(false);在函式未結束前,並不能馬上看到該控制元件變灰,必須要手動呼叫qApp->processEvents()函式,才能看到立刻變灰的效果。該函式作用是馬上處理一下時間迴圈。

2.應用程式單例
要實現單例,使用QLocalServer監聽應用名稱,這時setApplicationName必須要設定一個自定義名稱,否則預設為空。
在判斷QLocalServer是否存在該連線,用QFile::exists()判斷m_LocalServer.fullServerName()全名,絕對路徑。

3.啟用顯示窗體
QWidget *w;
w->activateWindow();

w->showNormal();
一定是要先啟用窗體,然後再顯示,才能達到效果。如果順序相反,不能顯示視窗。

4.編譯出錯
如果在類中,新增或刪除了Q_OBJECT巨集或圖片,那麼最好執行qmake一下,否則可能會報一系列錯誤,錯誤裡面可能會出現"vtable ...."類的錯誤。

5.Qt奇怪的崩潰問題
經常是因為記憶體操作越界導致,或者使用C函式memset拷貝類。比如memset超過了陣列的大小:
char arr[10];
memset(arr, 0, 20); //錯誤
這些問題經常導致程式莫名其妙的崩潰,還除錯不出問題,而且在release會報錯,在debug下不會報錯。