Qt的槽函数消息传递机制不仅适合在同一个类中使用 ,同时也可以在不同类之间进行消息传递。信号槽在不同类之间进行消息传递步骤如下:
假如B类向A类传递信号
1.首先在B类中必须继承QObject类或者它的子类们,并且包含头文件。如果B类已经继承了其他类,那就让B类多继承。例如:ImageWidget类继承QObject和QGraphicsItem两个类(QObject或者它的子类们一定要放在前面,第二个public不能省略,否则会出现类型转换访问不存在)
class ImageWidget :public QObject,public QGraphicsItem
{
Q_OBJECT//这个是信号指令,需要消息传递则需要加上
}
2.在B类头文件中声明信号
括号里面的参数是信号携带的信息,可以不携带信息,只做函数跳转的作用。
signals:
void sendMessage(发送携带的信息);
3.在B类.cpp文件中需要发送信号的地方将信号发送出去
//此处为需要发送信号的位置(函数内部)
emit sendMessage(发送携带的信息);
4.在A类头文件中声明接收函数并且在.cpp中写函数处理内容
如果没有信息被携带,则不需要参数
private slots:
void getMessage(接收的信息);
5.在A类.cpp中连接信号与槽
connect(B类对象,SIGNAL(sendMessage(接收参数的类型)),this,SLOT(getMessage(接收参数的类型)));
如有描述不当,感谢指正,诚恳求教!