2016-05-19 21 views
1

Das Projekt, an dem ich gerade arbeite, könnte in Umgebungen mit Q4/5/5.6 entwickelt werden, was einige Schwierigkeiten bei Qt's verursacht Änderungen im Zusammenhang mit dem Web-Kit (wird verwendet, um Google Maps über die JavaScript-Schnittstelle anzuzeigen).#include QtWebKit (Qt4) oder QtWebKitWidgets (Qt <5.6) oder QtWebEngineWidgets (Qt> = 5.6)

konnte ich das richtige Modul in der Projektdatei laod, indem Sie:

greaterThan(QT_MAJOR_VERSION, 4) { 
    greaterThan(QT_MINOR_VERSION, 5) { 
     message("Qt5.6") 
     QT += widgets webenginewidgets #include <QtWebEngineWidgets> for Qt5.6 in map.cpp 
    } else { 
     message("Qt5") 
     QT += widgets webkitwidgets #include <QtWebKitWidgets> for Qt5 in map.cpp 
    } 
} else { 
    message("Qt4") 
    QT += webkit #include <QtWebKit> for Qt4 in map.cpp 
} 

Das Problem ist, dass jedes Modul eine andere #include hat:

#include QtWebKit   // for Qt4 
#include QtWebKitWidgets // for Qt5 lower then 5.6 
#include QtWebEngineWidgets // for Qt5.6 

Ist es möglich, Code portabel zu machen so dass es herausfinden kann, welche #include durchgeführt werden sollte?

Antwort

1

Sie können so etwas wie

#include <QtGlobal> 

#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) 
#include <QtWebEngineWidgets> 
#elif (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)) 
#include <QtWebKitWidgets> 
#else 
... 
#endif 
verwenden
Verwandte Themen