我在Qt中有一個UI應用程序,我有幾個運行大規模SQL查詢返回數千個結果的函數。Qt程序掛起(不響應)直到函數結束然後再次開始工作
當運行此查詢的按鈕被點擊時,UI窗口只是立即轉到'沒有響應',但是我可以從控制檯輸出中看到一切仍然在後臺運行。一旦函數結束,數據按預期呈現並且UI再次響應並且功能完全正常。
我知道這是因爲這個函數由於大量的結果而循環數千次,但是我希望我可以放入一個加載欄,它隨着搜索的進行而不是隻是鎖定了窗口,看起來程序崩潰了。 AFAIK我沒有記憶韭菜,所以有沒有人有任何建議?
哦也即時通訊想着它不是內存韭菜,因爲當我點擊該按鈕,任務管理器顯示只用於此過程一對夫婦MB的內存和處理器是絕不杏要麼
您應該閱讀有關_threading_。 – 2013-04-22 14:29:52
請熟悉'threading' ... – 2013-04-22 14:30:22
此外,只需放置一個進度條是沒有用的,因爲驅動GUI的整個事件循環在您運行函數時不會運行。有了Qt,在做一些可能需要很長時間的事情時纔可以啓動一個工作線程。工作者線程可以輕鬆地將信號發送到GUI以更新進度條。 – 2013-04-22 14:35:08