2011-12-15 41 views
1

對於只有一個類別,我聲明一個插槽和一個信號,並在slot方法定義中使用emit關鍵字調用signal方法。但是,我怎麼能發出一個類的信號到另一個有插槽的類。Qt中不同類別的信號/插槽功能C++

嗯,我試着用一個按鈕來修改標籤文本。按鈕由A類(它必須發出一個信號)創建,標籤由B類創建,必須有一個插槽來修改其上的文本

+0

你的問題似乎並不清楚。當第一類信號發射時,你想調用第二類的插槽嗎? – shekhar 2011-12-15 17:21:52

+0

@ user1087135是 – develoops 2011-12-15 17:25:17

+0

然後你需要做的就是使用shbk建議的connect方法。你的對象將不得不從QObject繼承,你將不得不包含Q_OBJECT宏,以便爲該類發生qt元對象預處理。 – shekhar 2011-12-15 17:29:16

回答

0

在名爲void emitSignalBlahBlah()的類中添加一個公共方法,作爲代碼爲emit。然後,所有需要觸發此信號的其他類將訪問此對象並調用該方法來執行此操作。

4

看起來你有類1,它有一個將被執行的方法,並將調用「emit」。當發生這種情況時,另一個班級的老虎機會發現。

定義第一類:2類的

class songs_text { 
public: 
signals: 
    void send_signal(); 
} 

int songs_text:function() { 
    emit send_signal(); 
} 

定義:

class wind { 
public slots: 
    void continue_job() { 
    }; 
} 

和主程序:

Wind wind(); 
Get_source songs_text(&mtempfile); 

QObject::connect(&songs_text, SIGNAL(send_signal()), 
    &wind, SLOT(continue_job()));