我们目前正在尝试将应用程序从 Qt4.8 移植到 Qt5.5,但在运行时遇到信号连接问题。
我们使用旧的信号和槽语法,该语法仍然受支持,并且我们在 Qt5.5 下运行时获得“无此类信号”之类的消息,而在 Qt4.8 下执行效果良好。
例如,我们有以下连接:
connect(_vuePalette, SIGNAL(paletteModifiee(Pointeur<LUT>, Pointeur<Fonction>, TypeValeurVue, bool)), this, SLOT(paletteModifiee_SLOT(Pointeur<LUT>, Pointeur<Fonction>, TypeValeurVue, bool)));
运行时生成的消息是:
QObject::connect:vueimage.cpp 中没有这样的信号 VuePalette::paletteModifiee(Pointeur, Pointeur, TypeValeurVue, bool):83 (发件人名称:'VuePalette')
_vuePalette 指的是从 QWidget 派生并包含 Q_OBJECT 宏的类“VuePalette”,它指的是从 QObject 派生的多个类派生的名为“VueImage”的类,并且“VueImage”也包含 Q_OBJECT 宏.
信号和槽分别定义在“VuePalette”类的“signals”部分和“VueImage”类的“public slot”部分。
有人对此事有提示吗?
致以诚挚的问候
谢谢您的回复。
我相信我已经找到问题所在了:在“connect”语句中,“Pointeur”是一个QSharedPointer,因此“LUT”和“Fonction”类需要从QObject继承并包含Q_OBJECT宏。
抱歉,我之前没有找到它,但如果它可以帮助某人,那就值得了:)。