从Qt4.8移植到Qt5.5时没有这个信号

问题描述 投票:0回答:1

我们目前正在尝试将应用程序从 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”部分。

有人对此事有提示吗?

致以诚挚的问候

qt5 porting signals-slots
1个回答
1
投票

谢谢您的回复。

我相信我已经找到问题所在了:在“connect”语句中,“Pointeur”是一个QSharedPointer,因此“LUT”和“Fonction”类需要从QObject继承并包含Q_OBJECT宏。

抱歉,我之前没有找到它,但如果它可以帮助某人,那就值得了:)。

© www.soinside.com 2019 - 2024. All rights reserved.