Qt5中信号来自其他函数,那sender应该怎么写
时间: 2023-07-16 09:15:23 浏览: 75
在 Qt5 中,信号是一种特殊的函数,它们用于通知对象已发生某些事件。当信号被触发时,与该信号连接的一个或多个槽函数将被调用。
如果信号来自其他函数,那么在连接信号和槽函数时,需要指定信号的发送者。发送者可以是任何继承自 QObject 的对象,包括 QWidget、QMainWindow、QDialog、QThread 等等。
在连接信号和槽函数时,需要使用 QObject::connect() 函数。该函数的第一个参数是信号的发送者,第二个参数是信号的名称,第三个参数是槽函数的接收者,第四个参数是槽函数的名称。
例如,假设我们有一个名为 myFunction() 的函数,它会触发一个名为 mySignal() 的信号。我们想要在另一个对象中连接这个信号和一个名为 mySlot() 的槽函数。代码如下:
```cpp
class MyObject : public QObject
{
Q_OBJECT
public slots:
void mySlot()
{
// 槽函数的实现
}
};
void otherFunction()
{
MyObject* obj = new MyObject;
// 连接信号和槽函数
QObject::connect(myFunction(), &MyFunction::mySignal, obj, &MyObject::mySlot);
}
```
在这个例子中,myFunction() 函数返回一个指向触发 mySignal() 信号的对象的指针。连接信号和槽函数时,我们将 obj 指定为 mySlot() 函数的接收者。这意味着当 mySignal() 信号被触发时,mySlot() 函数将在 obj 对象上被调用。
注意:myFunction() 函数应该返回一个指向发送信号的对象的指针。如果该函数不返回指针,或者返回一个空指针,则连接信号和槽函数将失败。
阅读全文