我有一个处理文件传输的类。
发出的信号之一是finished()信号

在父端,我想将此finished()信号连接到fileTransferFinished()插槽
但是我怎么知道哪个实例完成了呢?因为其中有许多同时运行。

我知道我可以利用QObject::sender()方法返回发射器,但是这样,我无法访问实例的方法。


  qDebug()< getID();


它说no member named getID in QObject

我想将指针放在Slot函数中,这可能吗?

最佳答案

documentation中查看Object::sender()的原型:

QObject * QObject::sender() const


它返回一个指向QObject实例的指针,因此您将无法在该返回值上调用getID()方法。

在使用它之前,将Object::sender()的返回值强制转换为类的指针:

YourClass * sender_obj = qobject_cast<YourClass*>(QObject::sender());
qDebug() << "finished " << sender_obj->getID();

关于c++ - 在Qt的emit()中传递指向自身的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24344500/

10-09 06:33
查看更多