2010-10-12 70 views
3

我一直在絆倒一些不同的步驟來做到這一點。我在編譯錯誤的文件上運行了qt3to4.exe,並通過了很多轉換步驟,但是現在我得到這個錯誤: 1>c:\qt\4.7.0\src\qt3support\widgets\q3toolbar.h(64) : error C2039: 'ToolBarDock' : is not a member of 'Qt' 和55其他類似的錯誤。這讓我感到困惑,因爲它在qt自己的q3support庫中。我還在QT幫助頁面(http://doc.trolltech.com/4.2/qt-qt3.html)上看到ToolBarDock已被棄用,應該使用Qt :: Dock來代替。 我在這方面沒有找到太多的幫助。我在Visual Studio 2008中使用了庫。任何QT/Visual Studio專家都在那裏?如何將qt3庫完全移植到qt4?

如果這會有所幫助,這裏是它在q3toolbar.h失敗的代碼:我結束了對這個問題去不同的路線

Q3ToolBar(const QString &label, 
      Q3MainWindow *, Qt::ToolBarDock = Qt::DockTop, 
      bool newLine = false, const char* name=0); 
+1

如果你已經安裝了Qt visual-add-in並且檢查是否有幫助,請在Qt - > Qt項目設置(菜單)中添加Qt3Support模塊。它會自動添加所需的定義 – 2010-10-12 06:49:20

+0

@Kamil:在pro.file上運行qt3to4會自動將Qt3Support添加到項目文件中。 – 2010-10-24 12:22:03

回答

2

其實qt34qt4並沒有做所有的事。有很多方法,枚舉等,這些都沒有轉換。它或多或少是簡單的查找替換工具,它替換了以下來自qt \ tools \ porting \ q3porting.xml的說明。 在許多情況下,有一個類的替換定義,但不是此類的方法。在某些情況下,qt3to4代替了根本不屬於Qt類的代碼中的枚舉和方法。所以要小心。無論如何,我會建議您獲取所有Qt類的代碼清單,仔細閱讀您所使用的每個類的移植說明(http://doc.qt.nokia.com/4.5/porting4.html)。 另一個問題是返回類型,qt3to4不檢查返回值的使用方式。幸運的qt3to4做得很好,所以修復其他問題往往是一件微不足道的重複任務。

如果您必須移植UI,請查看無證參數 - uic3的包裝。您可以使用一些數據來估算您的工作量:我已經在2.5個月內移植過一次600TLOC + 150個UI,目前我正在移植大約150個TLOC項目,並且在2年的時間裏差不多周。

1

。我在其他地方找到了我需要的「qt3庫」的實現。在我發現之前,我在這裏得到了一些同事的建議。共識是我需要重新構建包含qt3支持的Qt。雖然我沒有按照這個做,但這裏有一些有用的鏈接。

http://www.qtcentre.org/wiki/index.php?title=Qt4_with_Visual_Studio

http://lists.trolltech.com/qt-interest/2006-11/thread00177-0.html

如果有人遇到這種通過這個問題入眼,請發表您的解決方案!謝謝。

2

在將項目導入到VC++後,我也有這些錯誤。將QT3_SUPPORT添加到預處理器定義中修復了它。