我有一个类处理文件传输。
其中一个发射是 finished()
信号
在父端,我想将此 finished()
信号连接到 fileTransferFinished()
插槽
但是我怎么知道哪个实例完成了呢?因为有很多它们同时运行..
我知道我可以使用 QObject::sender()
方法来返回发射器,但是这样我就不能访问我的实例的方法了。
qDebug() << "finished " << QObject::sender()->getID();
它说 QObject 中没有名为 getID 的成员
我想将我的指针放在 Slot 函数中,这可能吗?
最佳答案
查看 documentation 中 Object::sender()
的原型(prototype):
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/