信号与槽机制 各个组件之间的交互
信号(Signal):就是在特定情况下被发射的事件,例如PushButton 最常见的信号就是鼠标单击时发射的 clicked() 信号
槽(Slot):就是对信号响应的函数。槽就是一个函数,与一般的C++函数是一样的,可以定义在类的任何部分(public、private 或 protected),可以具有任何参数,也可以被直接调用。槽函数与一般的函数不同的是:槽函数可以与一个信号关联,当信号被发射时,关联的槽函数被自动执行。
connect 前面是信号 后面是槽
//QT4.0
connect(this, &GraphicsSceneTimeline::sendVideoSeek, mediaServer, &MediaServer::winVideoSeek);
//QT5.0
connect(this, SIGNAL(sendVideoSeek(bool,int64_t)), mediaServer, SLOT(winVideoSeek(bool,int64_t)));
signals:
void sendVideoSeek(QString type, int64_t seekMs);
?在GraphicsSceneTimeline? emit 发射信号
void GraphicsSceneTimeline::mousePressEvent(QGraphicsSceneMouseEvent *e)
{
emit sendVideoSeek("seek", seekS);
}
?在 MediaServer 类里 槽函数 winVideoSeek 接收
public slots:
void winVideoSeek(QString type, int64_t seekMs);
void MediaServer::winVideoSeek(QString type, int64_t seekMs) {
}
参考:https://blog.csdn.net/ljsant/article/details/118827657
|