QTableWidget界面有數據以後鼠標點擊無響應界面無響應

1.問題:QTableWidget上出現數據以後,界面無響應,鼠標點擊沒有響應,可是仍是能夠正常接收數據,連關閉按鈕都沒法關閉,必須經過殺死進程來關閉程序。有的電腦是無響應,有的電腦又能夠。html

2.分析:界面無響應的緣由:函數

(1)程序崩潰卡死,點擊會無響應,可是數據還在正常接收,說明不是,排除ui

(2)界面上出現了模態對話框,只有關閉了模態對話框,才能夠點擊其餘界面。並且程序能正常執行。只是界面沒法響應。spa

3.排查步驟htm

查看數據顯示中出現的窗口,特別是自定義的窗口。我在QTableWidget添加數據,operation一欄是自定義的一個widget類,class QTriggerResourceWnd : public QWidget。而後調用setCellWidget函數添加自定義的窗口widget。blog

QTriggerResourceWnd * pTrgger = new QTriggerResourceWnd();進程

ui.tableWidget->setCellWidget(step, 8, pTrgger);開發

經過註釋掉這一行ui.tableWidget->setCellWidget(step, 8, pTrgger);  能夠正常響應,說明QTriggerResourceWnd 是模態對話框。get

因此講構造函數中添加一行代碼設置爲非模態:setWindowModality(Qt::NonModal);it

 

4.結論:因爲系統環境的緣由,有的電腦默認Qwidget爲模態對話框,有的默認Qwidget爲非模態對話框,因此最好在代碼中設置setWindowModality(Qt::NonModal);將窗口強制設置爲非模態,這樣在不一樣的系統環境中都會以非模態窗口顯示,不會出現界面無響應的狀況。

 

本身開發了一個股票智能分析軟件,功能很強大,須要的點擊下面的連接獲取:

http://www.javashuo.com/article/p-kahdodke-ge.html

相關文章
相關標籤/搜索