【问题标题】:How can completely port a qt3 library to qt4?如何将一个qt3库完全移植到qt4?
【发布时间】:2010-10-12 06:14:30
【问题描述】:

我一直在通过一些不同的步骤来做到这一点。我在有编译错误的文件上运行 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 专家吗?

如果这有帮助,这是它在 q3toolbar.h 中失败的代码:

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

【问题讨论】:

  • 在 Qt -> Qt 项目设置(菜单)中添加 Qt3Support 模块,如果您已经安装了 Qt 可视化插件并检查它是否有帮助。它会自动添加所需的定义
  • @Kamil:在 pro.file 上运行 qt3to4 会自动将 Qt3Support 添加到项目文件中。

标签: c++ visual-studio-2008 qt visual-c++


【解决方案1】:

实际上 qt34qt4 并没有做对所有事情。有许多方法、枚举等未转换。它或多或少是简单的查找替换工具,它替换 qt\tools\porting\q3porting.xml 中的以下说明 在许多情况下,有一个类的替换定义,但没有这个类的方法。在某些情况下,qt3to4 替换了根本不属于 Qt 类的代码中的枚举和方法。所以要小心。无论如何,我建议获取代码中所有 Qt 类的列表,仔细阅读您使用的每个类的移植说明 (http://doc.qt.nokia.com/4.5/porting4.html)。 另一个问题是返回类型,qt3to4 不检查返回值的使用方式。幸运的是 qt3to4 做得很好,因此修复其余部分通常是一项微不足道的重复性任务。

如果您必须移植 UI,请查看 uic3 的未记录参数 -wrap。

P.S.:一些用于估算工作量的数据,可能有用:我在 2.5 个月内移植(编译)一次 600TLOC + 150 个 UI,目前我正在移植大约 150 个 TLOC 项目,并在 2 周内完成了相当多的工作.

【讨论】:

    【解决方案2】:

    在将项目导入 VC++ 后,我也遇到了这些错误。将 QT3_SUPPORT 添加到预处理器定义中修复了它。

    【讨论】:

      【解决方案3】:

      我最终在这个问题上走了一条不同的路线。我从其他地方的“qt3 库”中找到了我需要的实现。就在我发现这一点之前,我从这里的一些同事那里得到了一些建议。共识是我需要重建 Qt,指定包括 qt3 支持。虽然我没有遵循这一点,但这里有一些有用的链接。

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

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

      如果有人遇到此问题并解决了此问题,请发布您的解决方案!谢谢。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-24
        • 1970-01-01
        • 1970-01-01
        • 2012-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多