我们目前正在尝试将应用程序从Qt4.8移植到Qt5.5,并且我们在运行时遇到信号连接问题。
我们使用旧的信号和插槽语法,这仍然是支持的,我们在Qt5.5下运行时获得像"no such signal"这样的消息,而在Qt4.8下执行得很好。
例如,我们有以下连接:
connect(_vuePalette, SIGNAL(paletteModifiee(Pointeur<LUT>, Pointeur<Fonction>, TypeValeurVue, bool)), this, SLOT(paletteModifiee_SLOT(Pointeur<LUT>, Pointeur<Fonction>, TypeValeurVue, bool)));
运行时生成的消息为:
QObject::connect: No such signal VuePalette::paletteModifiee(Pointeur, Pointeur, TypeValeurVue, bool) in veimage .cpp:83(发件人名称:'VuePalette')
_vuePalette指的是一个类"VuePalette",它派生自QWidget并包含Q_OBJECT宏,这指的是一个名为"VueImage"的类,它派生自多个从QObject派生的类,"VueImage"也包含Q_OBJECT宏。
信号和插槽分别定义在"VuePalette"类的"signals"部分和"VueImage"类的"public slots"部分。
有人对这件事有什么提示吗?
最诚挚的问候,安东尼
感谢您的回复。
我相信我已经找到了问题所在:在"连接"语句中,"Pointeur"是一个QSharedPointer,因此"LUT"one_answers"function"类需要从QObject继承并包含Q_OBJECT宏。
对不起,我之前没有找到,但如果它能帮助别人,那就值得了。