使 Qt5 连接样式在 Qt4 中工作

Make Qt5 connect style work in Qt4

我想将一个应用程序(小型到中型)从 Qt5 移植到 Qt4。我是否需要手动重写所有连接(当前使用新的 Qt5 样式)?

我正在寻找替代(简单)方法:)

据我所知,是的。但是你总是可以制作一个小脚本来逐个文件地更改它们。

另一种方法是检测 connect 以在运行时转储等效的旧式语法,包括文件名和行号,并使用它用旧式连接替换新式连接。

通过检测连接我的意思是使用搜索和替换将 connect 替换为 myConnect 宏,并编写您自己的 myConnectImpl 执行 QObject::connect 然后综合旧式连接并转储它。要将方法指针转换为方法索引,请使用 mataobject->static_metacall(object, QMetaObject::IndexOfMethod, args) 作为给定 class 的元对象,然后使用 proceed up the superclasses 直到达到 QObject.

您必须了解一些实施细节才能实现。也许 this answer-in-progress 会提供一些灵感。