没有合适的资源?快使用搜索试试~ 我知道了~
首页QT4迁移至QT5完全指南
将Qt4代码迁移到Qt5还是比较简单的。实际上,在Qt5开发过程中就已经注意了与Qt4代码保持兼容性。与Qt3到Qt4的迁移不同,Qt5的核心类库并没有做大的API的改,只有几个新的类取代了旧的(例如,像Qt4的QList取代了QPtrList和QValueList;itemview取代了Q3ListView;graphicsview取代Canvas API);同时也没有那些编译通过了,但运行时的行为却与之前的不一致的(例如,QWidget::show现在是非虚函数,绘制应该在paintEvent中进行等等)。 但是,迁移的代价也不会是零。本文总结了KDE部分代码从Qt4迁移到Qt5所需要注意的问题。KAddressbook迁移到Qt5和KDE Frameworks 5 KDE PIM是最后一个完整迁移到Qt4和kdelibs4的部分。迁移到Qt5应当更快些。
资源详情
资源评论
资源推荐

Qt4 迁移至 Qt5
将 Qt 4 代码迁移到 Qt 5 还是比较简单的。实际上,在 Qt 5 开发过程中就
已经注意了与 Qt 4 代码保持兼容性。
与 Qt 3 到 Qt 4 的迁移不同,Qt 5 的核心类库并没有做大的 API 的修改,
只有几个新的类取代了旧的(例如,像 Qt 4 的 QList 取代了 QPtrList 和
QValueList;itemview 取代了 Q3ListView;graphicsview 取代了 Canvas API);
同时也没有那些编译通过了,但运行时的行为却与之前的不一致的(例如,
QWidget::show 现在是非虚函数,绘制应该在 paintEvent 中进行等等)。
但是,迁移的代价也不会是零。本文总结了 KDE 部分代码从 Qt 4 迁移到 Qt
5 所需要注意的问题。
KAddressbook 迁移到 Qt 5 和 KDE Frameworks 5
KDE PIM 是最后一个完整迁移到 Qt 4 和 kdelibs 4 的部分。迁移到 Qt 5 应
当更快些。
1.迁移之前
迁移策略中应该有这么一条:能够同时使用新版本和旧版本的 Qt 编译代码,
也就是保持 Qt 4 和 Qt 5 的兼容性。这么做的好处是,能够保证你的代码在最小
化的库上可以通过编译,让你的代码在 Qt 4 依然可用;也能够保证在迁移过程
中,单元测试代码能够顺利运行;最后,还能够很快地区别出,哪些是本来就有
的 bug,哪些是由于迁移到 Qt 5 新引入的 bug。
1.1 迁移 Qt3Support
迁移代码,可以从让当前 Qt 4 代码“现代化”开始。
从代码迁移角度来看,Qt 5 的有意义的改变是,移除了 Qt3Support 模块,
移除了所有标记为 Qt3Support 的 API。在大多数情况下,Qt3Support 的代码在
Qt 4 中有一个更适合的名字。有的函数直接改名,例如 QWidget::setShown 改
为 QWidget::setVisible。部分 KDE 代码仍然使用了旧的函数,这种情况也发生
在其它古老的第三方代码库中。
从 Qt 4 迁移到 Qt 5,移除代码中的 Qt3Support API 是必要的、不可避免
的。虽然理论上,我们也可以为 Qt 5 单独编译 Qt3Support 模块。
1.2 修正 include
相对于 Qt 4,Qt 5 的一个主要的基础架构修改是,将 widget 从 QtGui 模块
剥离开来,放到了全新的 QtWidgets 模块。这显然需要改变构建系统,同时也要
求新引入一些原本不需要单独引入的头文件,因为这些头文件可能从现有 QtGui
模块中删除了。举个例子,Qt 5 中我们需要添加#include <QDrag>,这在之前
的 Qt 4 的代码是不需要的。这是因为,在 Qt 4 中,它已经被引入到
gui/kernel/qevent.h 头文件,但是 Qt 5 则没有。
另外一个有关 include 的修正是,你必须将之前的 QtGui 模块的头文件改成
QtWidgets,例如,















安全验证
文档复制为VIP权益,开通VIP直接复制

评论5