编写可以在Qt4、Qt5中同时执行的代码

简述

我们写出的代码既希望它能够在Qt4.X版本上运行,又希望它能在Qt5.X版本上运行,如何实现呢?

  • 简述
  • Qt4X与Qt5X的区别
  • 方法
    • 解决文件包含路径不同
    • 解决编译时链接的lib不同
    • 解决运行时加载的dll不同

Qt4.X与Qt5.X的区别

  1. 文件包含路径不同
  2. 编译时需要链接的lib不同
  3. 运行时需要加载的dll不同

方法

解决文件包含路径不同

以Qt5.X中的QtWidgets在Qt4.X中需要替换为QtGui为例

#if QT_VERSION>=0x050000
#include 
#else
#include 
#endif

解决编译时链接的lib不同

只要正确的包含了头文件,系统会自动链接正确的lib,这一点不用担心。

解决运行时加载的dll不同

可以在exe同目录下建立两个文件夹,Qt4Dll和Qt5Dll分别存放Qt4和Qt5版本的dll,然后用以下代码进行设置。

#if QT_VERSION>=0x050000
    SetDllDirectory(_T("./Qt4Dll"));
#else 
    SetDllDirectory(_T("./Qt5Dll"));
#endif

或者使用

#if QT_VERSION>=0x050000
    LoadLibrary(_T("./Qt4Dll/*.dll"));
#else 
    LoadLibrary(_T("./Qt5Dll/*.dll"));
#endif

你可能感兴趣的:(Qt)