2015-09-25 19 views
0

我想將應用程序(從小到中等大小)從Qt5移植到Qt4。我是否需要手動重寫所有連接(目前使用新的Qt5樣式)?使Qt5連接樣式在Qt4中工作

我正在尋找一種替代(簡單)的方法:)

+0

請問......爲什麼? – peppe

+0

爲什麼要移植到Qt4?由於在Raspberry Pi中構建Qt5非常耗時。 – KcFnMi

+0

@KcFnMi你不能交叉編譯用於Pi的Qt 5,然後複製它,可能會更快(_disclaimer_:我沒有交叉編譯的經驗。) –

回答

2

另一種方法是使用儀器connect在運行時轉儲舊式語法等同於文件名和行號,並用它替換舊式連接的新式連接。

通過插連接我的意思是更換connectmyConnect宏中使用的搜索和替換,並編寫自己的myConnectImpl執行QObject::connect,然後合成舊式連接並轉儲它。要將方法指針轉換爲方法索引,請使用mataobject->static_metacall(object, QMetaObject::IndexOfMethod, args)作爲給定類的元對象,然後使用proceed up the superclasses,直到達到QObject

你必須理解一些實現細節來解決這個問題。也許this answer-in-progress將提供一些啓發。

+0

或Clang插件。還是覺得...哈克? – peppe

+0

@peppe任何比完全手動工作都快的東西可能是值得的:)鏗鏘插件也可以工作,但也許更多一些代碼 - 我不確定。 –

1

AFAIK,是的。但是你總是可以創建一個腳本來使用fileby文件並對其進行更改。

+0

這將是一個大腳本。因爲您不僅需要處理方法類型,還需要處理static_cast –