1. 程式人生 > >Qt 筆記:多執行緒與介面元件的通訊(上)

Qt 筆記:多執行緒與介面元件的通訊(上)

是否可以在子執行緒中建立介面元件?

class TestThread : public QThread
{
    Q_OBJECT

protected:
    void run()
    {
        QWidget w;
        
        w.show();
        
        exec();
    }

}

子執行緒如何對介面元件進行更新?

解決發哪敢-訊號與槽

-在子執行緒類中定義介面元件的更新訊號(updateUI)

-在主視窗類中定義更新介面元件的槽函式(setInfo)

-使用非同步方式連線更新訊號到槽函式(updateUI -》setInfo)

·子執行緒通過發射訊號的方式更新介面元件

·所有的介面元件物件只能依附於主執行緒

ps:子執行緒不能直接操作介面元件,但是可以通過訊號與槽的機制間接操作介面外掛

總結:

-現代GUI平臺值許在主執行緒中直接操作介面元件

-Qt總可以藉助訊號與槽的機制在子執行緒中操作介面元件

-進行訊號與槽的連線時必須採用非同步連線的方式

-介面元件物件必須依附於主執行緒