Qt 有没有办法假装发出信号?

Qt 有没有办法假装发出信号?,qt,Qt,我在项目中不使用moc。使用新的signal/slot语法,它工作得非常好。但在派生的Qt类中,它成为发出信号的必要条件 不使用moc就可以进行此操作?不,这是不可能的。 moc实际上实现了信号功能。如果通过查看生成的moc_myclass.cpp查看生成的信号函数,您将看到信号函数只不过是对QMetaObject::activate的调用,该函数需要指向信号发送器的QMetaObject的指针。由于不运行moc,不会生成任何元对象,因此您甚至无法手动调用QMetaObject::activat

我在项目中不使用moc。使用新的signal/slot语法,它工作得非常好。但在派生的Qt类中,它成为发出信号的必要条件


不使用moc就可以进行此操作?

不,这是不可能的。


moc实际上实现了信号功能。如果通过查看生成的moc_myclass.cpp查看生成的信号函数,您将看到信号函数只不过是对
QMetaObject::activate
的调用,该函数需要指向信号发送器的
QMetaObject
的指针。由于不运行moc,不会生成任何元对象,因此您甚至无法手动调用
QMetaObject::activate

不,这是不可能的。


moc实际上实现了信号功能。如果通过查看生成的moc_myclass.cpp查看生成的信号函数,您将看到信号函数只不过是对
QMetaObject::activate
的调用,该函数需要指向信号发送器的
QMetaObject
的指针。由于没有运行moc,就不会生成任何元对象,因此您甚至无法手动调用
QMetaObject::activate

目前关于moc有一个非常好的博客条目:


关于主运行中心,目前有一篇非常好的博客:


您可以创建自己的信号/插槽式体系结构,而无需moc(显然更简单,您没有moc通行证…),并根据需要使用它。我前一段时间做过,效果很好:你不使用moc的原因是什么?@David Kernin,谢谢你的链接,这篇文章内容丰富。你可以在没有moc的情况下创建自己的信号/插槽式体系结构(显然是更简单的,你没有moc通行证…),然后随心所欲地使用它。我前一段时间做过,效果很好:你不使用moc的原因是什么?@David Kennin,谢谢你的链接,这篇文章内容丰富。sry,我记得行星就在那里,只是看了看行星