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);將窗口強制設置爲非模態,這樣在不一樣的系統環境中都會以非模態窗口顯示,不會出現界面無響應的狀況。
本身開發了一個股票智能分析軟件,功能很強大,須要的點擊下面的連接獲取: