2011-12-15 67 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()));