使 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 会提供一些灵感。
我想将一个应用程序(小型到中型)从 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 会提供一些灵感。