c++ - 在 Qt 的 emit() 中传递指向自身的指针

标签 c++ qt qt5 signals-slots

我有一个类处理文件传输。 其中一个发射是 finished() 信号

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

我知道我可以使用 QObject::sender() 方法来返回发射器,但是这样我就不能访问我的实例的方法了。

qDebug() << "finished " << QObject::sender()->getID();

它说 QObject 中没有名为 getID 的成员

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

最佳答案

查看 documentationObject::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/

相关文章:

c++ - Qt C++ 缺少 DLL

c++ - 按行和空格分别拆分字符串(使用 getline)

c++ - 为什么 pjmedia_snd_port_create(...) 初始化声音端口失败?

c++ - 如何在 QGraphicsScene 上绘制填充多边形

c++ - C++模板类基于主函数的调用来打印字符串或int输出

qt - QML 文件的更改何时不生效?

QTableView 和 horizo​​ntalHeader()->restoreState()

c++ - 从文件动态更新 Qdialog 中的 QTextBrowser(由另一个作业更新)

qt - 在Qt5中创建静态库并使用它

python - 通过 Qt Designer 创建的对话框断开 QGis 插件的信号