假設我有多線程應用程序。然後根據Qt哲學,您甚至不能修改在GUI中添加的Widgets
的屬性。假設類別Not_GUI
的對象已被移動到另一個QThread
,那麼在Not_GUI
的函數中調用button1->SetEnabled(false);
(button1
是添加在GUI中的QPushButton
)是非法的。在Qt中修改非GUI線程中的小部件?
目前我的應用程序有許多GUI widgets
(如QLabel,QLineEdit的,等等)&,因爲所有的events
只有1線程的應用程序掛起了一陣處理,由於巨大的繪畫活動。 有沒有辦法讓我可以以某種方式將Widgets
的一些工作量分配給各種線程?
關於SIGNAL&SLOT ans: SLOT上的處理是否完成GUI線程或SIGNAL發出的線程? 是的小部件只是Qt構建我還沒有創建任何自定義小部件。使用像QLabel,QLineEdit這樣的小部件。掛起是由於繪畫只是因爲如果我不添加該QGridLayout到GUI然後沒有掛起。通過掛斷我的意思是,應用程序不響應點擊和顯示(沒有響應)和Windows 7中的圓形光標。 我沒有處理任何事件我自己。一切都由Qt的功能來處理。 – 2013-03-14 10:21:44
如果'o1'和'o2'被***移動到***不同線程't1'和't2','o1'觸發信號,那麼'o2'的槽將由線程't2執行'。如果你直接調用'o2-> slot()',那麼它將像任何正常的函數調用一樣被執行。但是這是多線程的問題。 – UmNyobe 2013-03-15 09:09:29
這個坑不是由於繪畫。無限期地不。這是由於你的函數在主線程中做了大量的處理,這會妨礙顯示畫圖代碼的執行。 – UmNyobe 2013-03-15 09:11:39