David Cole wrote: > Doesn't seem like "return false;" is quite the right implementation > for vtkQtView::SaveImage... > > ;-) >
I can't get anything past you :). Though in my defense the commit message only says it builds :). I found another issue with a QtNetwork include, so an updated version is attached. Thanks, Steve.
>From e825f9f4da012bdf4e129aeb238b808c0e714fc4 Mon Sep 17 00:00:00 2001 From: Stephen Kelly <stephen.ke...@kdab.com> Date: Wed, 12 Dec 2012 17:42:53 +0100 Subject: [PATCH] Build with Qt 4 and 5. --- CMake/ECMQt4To5Porting.cmake | 98 +++++++++++++++++++++++++++ CMake/FindQt5Transitional.cmake | 77 +++++++++++++++++++++ Examples/GUI/Qt/GraphicsView/CMakeLists.txt | 2 +- GUISupport/Qt/CMakeLists.txt | 3 +- GUISupport/Qt/Q4VTKWidgetPlugin.cxx | 3 +- GUISupport/Qt/Q4VTKWidgetPlugin.h | 5 ++ GUISupport/Qt/QVTKWidget.cxx | 2 +- GUISupport/Qt/QVTKWidget.h | 2 +- GUISupport/Qt/Testing/Cxx/CMakeLists.txt | 3 +- GUISupport/QtOpenGL/CMakeLists.txt | 3 +- GUISupport/QtOpenGL/QVTKGraphicsItem.h | 2 +- GUISupport/QtSQL/CMakeLists.txt | 3 +- GUISupport/QtWebkit/CMakeLists.txt | 3 +- GUISupport/QtWebkit/vtkQtRichTextView.cxx | 2 - Rendering/Qt/CMakeLists.txt | 3 +- Views/Qt/CMakeLists.txt | 3 +- Views/Qt/vtkQtView.cxx | 7 +- 17 files changed, 199 insertions(+), 22 deletions(-) create mode 100644 CMake/ECMQt4To5Porting.cmake create mode 100644 CMake/FindQt5Transitional.cmake diff --git a/CMake/ECMQt4To5Porting.cmake b/CMake/ECMQt4To5Porting.cmake new file mode 100644 index 0000000..9fc84a6 --- /dev/null +++ b/CMake/ECMQt4To5Porting.cmake @@ -0,0 +1,98 @@ + +set(QT_QTGUI_LIBRARIES + ${Qt5Gui_LIBRARIES} + ${Qt5Widgets_LIBRARIES} + ${Qt5PrintSupport_LIBRARIES} + ${Qt5Svg_LIBRARIES} +) + +set(QT_INCLUDES + ${Qt5Gui_INCLUDE_DIRS} + ${Qt5Widgets_INCLUDE_DIRS} + ${Qt5PrintSupport_INCLUDE_DIRS} + ${Qt5Svg_INCLUDE_DIRS} +) +set(QT_QTGUI_LIBRARY ${QT_QTGUI_LIBRARIES}) + +set(_qt_modules + Core + Declarative + Widgets + Script + ScriptTools + DBus + Network + Test + Designer + Concurrent + Xml + UiTools + Qml + Quick1 + WebKit + WebKitWidgets + Sql + OpenGL +) + +foreach(_module ${_qt_modules}) + string(TOUPPER ${_module} _module_upper) + set(QT_QT${_module_upper}_LIBRARIES ${Qt5${_module}_LIBRARIES}) + set(QT_QT${_module_upper}_LIBRARY ${QT_QT${_module_upper}_LIBRARIES}) + list(APPEND QT_INCLUDES ${Qt5${_module}_INCLUDE_DIRS}) + set(QT_QT${_module_upper}_FOUND ${Qt5${_module}_FOUND}) +endforeach() + +list(APPEND QT_QTCORE_LIBRARIES ${Qt5Concurrent_LIBRARIES}) +list(APPEND QT_QTCORE_LIBRARY ${Qt5Concurrent_LIBRARIES}) + +set(QT_QTDECLARATIVE_LIBRARIES ${Qt5Quick1_LIBRARIES}) +set(QT_QTDECLARATIVE_LIBRARY ${Qt5Quick1_LIBRARIES}) + +get_target_property(QT_QMAKE_EXECUTABLE Qt5::qmake LOCATION) +get_target_property(QT_RCC_EXECUTABLE Qt5::rcc LOCATION) +if (TARGET Qt5::uic) + get_target_property(QT_UIC_EXECUTABLE Qt5::uic LOCATION) +endif() + +if (TARGET Qt5::qdbuscpp2xml) + get_target_property(QT_QDBUSCPP2XML_EXECUTABLE Qt5::qdbuscpp2xml LOCATION) +endif() + +if (TARGET Qt5::qdbusxml2cpp) + get_target_property(QT_QDBUSXML2CPP_EXECUTABLE Qt5::qdbusxml2cpp LOCATION) +endif() + +add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0) + +macro(qt4_wrap_ui) + qt5_wrap_ui(${ARGN}) +endmacro() + +macro(qt4_wrap_cpp) + qt5_wrap_cpp(${ARGN}) +endmacro() + +macro(qt4_generate_moc) + qt5_generate_moc(${ARGN}) +endmacro() + +macro(qt4_add_dbus_adaptor) + qt5_add_dbus_adaptor(${ARGN}) +endmacro() + +macro(qt4_add_dbus_interfaces) + qt5_add_dbus_interfaces(${ARGN}) +endmacro() + +macro(qt4_add_dbus_interface) + qt5_add_dbus_interface(${ARGN}) +endmacro() + +macro(qt4_generate_dbus_interface) + qt5_generate_dbus_interface(${ARGN}) +endmacro() + +macro(qt4_add_resources) + qt5_add_resources(${ARGN}) +endmacro() diff --git a/CMake/FindQt5Transitional.cmake b/CMake/FindQt5Transitional.cmake new file mode 100644 index 0000000..452c0f7 --- /dev/null +++ b/CMake/FindQt5Transitional.cmake @@ -0,0 +1,77 @@ + +find_package(Qt5Core QUIET) + +if (Qt5Core_FOUND) + if (NOT Qt5Transitional_FIND_COMPONENTS) + foreach(_component + Core + Gui + DBus + Designer + Declarative + Script + ScriptTools + Network + Test + Xml + Svg + Sql + Widgets + PrintSupport + Concurrent + UiTools + WebKit + WebKitWidgets + OpenGL + ) + find_package(Qt5${_component}) + list(APPEND QT_LIBRARIES ${Qt5${_component}_LIBRARIES}) + endforeach() + else() + foreach(_component ${Qt5Transitional_FIND_COMPONENTS}) + find_package(Qt5${_component} REQUIRED) + if ("${_component}" STREQUAL "Gui") + find_package(Qt5Widgets REQUIRED) + find_package(Qt5PrintSupport REQUIRED) + find_package(Qt5Svg REQUIRED) + list(APPEND QT_LIBRARIES ${Qt5Widgets_LIBRARIES} + ${Qt5PrintSupport_LIBRARIES} + ${Qt5Svg_LIBRARIES} ) + endif() + if ("${_component}" STREQUAL "Core") + find_package(Qt5Concurrent REQUIRED) + list(APPEND QT_LIBRARIES ${Qt5Concurrent_LIBRARIES} ) + endif() + if ("${_component}" STREQUAL "WebKit") + find_package(Qt5WebKitWidgets REQUIRED) + list(APPEND QT_LIBRARIES ${Qt5WebKitWidgets_LIBRARIES} ) + endif() + endforeach() + endif() + + set(Qt5Transitional_FOUND TRUE) + set(QT5_BUILD TRUE) + + include("${CMAKE_CURRENT_LIST_DIR}/ECMQt4To5Porting.cmake") # TODO: Port away from this. + include_directories(${QT_INCLUDES}) # TODO: Port away from this. + + if (Qt5_POSITION_INDEPENDENT_CODE) + set(CMAKE_POSITION_INDEPENDENT_CODE ON) + endif() + +else() + foreach(_component ${Qt5Transitional_FIND_COMPONENTS}) + if("${_component}" STREQUAL "Widgets") # new in Qt5 + set(_component Gui) + elseif("${_component}" STREQUAL "Concurrent") # new in Qt5 + set(_component Core) + endif() + list(APPEND _components Qt${_component}) + endforeach() + find_package(Qt4 ${QT_MIN_VERSION} REQUIRED ${_components}) + include(${QT_USE_FILE}) + + if(QT4_FOUND) + set(Qt5Transitional_FOUND TRUE) + endif() +endif() diff --git a/Examples/GUI/Qt/GraphicsView/CMakeLists.txt b/Examples/GUI/Qt/GraphicsView/CMakeLists.txt index ea466d3..04e978c 100644 --- a/Examples/GUI/Qt/GraphicsView/CMakeLists.txt +++ b/Examples/GUI/Qt/GraphicsView/CMakeLists.txt @@ -1,5 +1,5 @@ -find_package(Qt4 REQUIRED) +find_package(Qt5Transitional REQUIRED) set(QT_USE_QTOPENGL 1) set(QT_USE_QTWEBKIT 1) include(${QT_USE_FILE}) diff --git a/GUISupport/Qt/CMakeLists.txt b/GUISupport/Qt/CMakeLists.txt index 028d4c6..1a32a10 100644 --- a/GUISupport/Qt/CMakeLists.txt +++ b/GUISupport/Qt/CMakeLists.txt @@ -52,9 +52,8 @@ set(QVTKNonMocHeaders # import Qt4 build settings set(QT_USE_QTNETWORK 1) -find_package(Qt4 REQUIRED QUIET) +find_package(Qt5Transitional REQUIRED QUIET) mark_as_advanced(QT_QMAKE_EXECUTABLE) -include(${QT_USE_FILE}) qt4_wrap_cpp(QVTKLibMocSrcs ${QVTKMocHeaders}) diff --git a/GUISupport/Qt/Q4VTKWidgetPlugin.cxx b/GUISupport/Qt/Q4VTKWidgetPlugin.cxx index 64b68f2..3cd513e 100644 --- a/GUISupport/Qt/Q4VTKWidgetPlugin.cxx +++ b/GUISupport/Qt/Q4VTKWidgetPlugin.cxx @@ -144,5 +144,6 @@ QList<QDesignerCustomWidgetInterface*> QVTKPlugin::customWidgets() const return plugins; } +#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) Q_EXPORT_PLUGIN(QVTKPlugin) - +#endif diff --git a/GUISupport/Qt/Q4VTKWidgetPlugin.h b/GUISupport/Qt/Q4VTKWidgetPlugin.h index 0aedd9a..09b8d72 100644 --- a/GUISupport/Qt/Q4VTKWidgetPlugin.h +++ b/GUISupport/Qt/Q4VTKWidgetPlugin.h @@ -50,11 +50,16 @@ class QVTKWidgetPlugin : public QDesignerCustomWidgetInterface bool isContainer() const; }; +#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) +#define Q_PLUGIN_METADATA(any) +#endif + // implement designer widget collection interface class QVTKPlugin : public QObject, public QDesignerCustomWidgetCollectionInterface { Q_OBJECT Q_INTERFACES(QDesignerCustomWidgetCollectionInterface) + Q_PLUGIN_METADATA(IID "org.vtk.WidgetPlugin") public: QVTKPlugin(); ~QVTKPlugin(); diff --git a/GUISupport/Qt/QVTKWidget.cxx b/GUISupport/Qt/QVTKWidget.cxx index 9591717..18c4f4c 100644 --- a/GUISupport/Qt/QVTKWidget.cxx +++ b/GUISupport/Qt/QVTKWidget.cxx @@ -398,7 +398,7 @@ bool QVTKWidget::event(QEvent* e) if(QObject::event(e)) { - return TRUE; + return true; } if(e->type() == QEvent::KeyPress) diff --git a/GUISupport/Qt/QVTKWidget.h b/GUISupport/Qt/QVTKWidget.h index 2fb7d46..42e06a0 100644 --- a/GUISupport/Qt/QVTKWidget.h +++ b/GUISupport/Qt/QVTKWidget.h @@ -38,7 +38,7 @@ #include "vtkGUISupportQtModule.h" // For export macro #include "QVTKInteractor.h" -#include <QtGui/QWidget> +#include <QWidget> class QVTKInteractorAdapter; diff --git a/GUISupport/Qt/Testing/Cxx/CMakeLists.txt b/GUISupport/Qt/Testing/Cxx/CMakeLists.txt index 457cbb2..d1727a9 100644 --- a/GUISupport/Qt/Testing/Cxx/CMakeLists.txt +++ b/GUISupport/Qt/Testing/Cxx/CMakeLists.txt @@ -6,8 +6,7 @@ set(MyTests create_test_sourcelist(Tests ${vtk-module}CxxTests.cxx ${MyTests} EXTRA_INCLUDE vtkTestDriver.h) -find_package(Qt4 REQUIRED) -include(${QT_USE_FILE}) +find_package(Qt5Transitional REQUIRED) vtk_module_test_executable(${vtk-module}CxxTests ${Tests} QTestApp.cxx) diff --git a/GUISupport/QtOpenGL/CMakeLists.txt b/GUISupport/QtOpenGL/CMakeLists.txt index 4a3d8e3..9f018f6 100644 --- a/GUISupport/QtOpenGL/CMakeLists.txt +++ b/GUISupport/QtOpenGL/CMakeLists.txt @@ -9,8 +9,7 @@ set(LibSrcs ${QVTKLibSrcs} # import Qt4 build settings set(QT_USE_QTOPENGL 1) -find_package(Qt4 REQUIRED QUIET) -include(${QT_USE_FILE}) +find_package(Qt5Transitional REQUIRED QUIET) qt4_wrap_cpp(LibMocSrcs ${MocHeaders}) diff --git a/GUISupport/QtOpenGL/QVTKGraphicsItem.h b/GUISupport/QtOpenGL/QVTKGraphicsItem.h index dfc5c2e..861acc9 100644 --- a/GUISupport/QtOpenGL/QVTKGraphicsItem.h +++ b/GUISupport/QtOpenGL/QVTKGraphicsItem.h @@ -26,7 +26,7 @@ #define QVTKGraphicsItem_hpp #include "vtkGUISupportQtOpenGLModule.h" // For export macro -#include <QtGui/QGraphicsWidget> +#include <QGraphicsWidget> #include <QtOpenGL/QGLContext> #include <vtkSmartPointer.h> #include "QVTKWin32Header.h" diff --git a/GUISupport/QtSQL/CMakeLists.txt b/GUISupport/QtSQL/CMakeLists.txt index 5acb86b..11f80d7 100644 --- a/GUISupport/QtSQL/CMakeLists.txt +++ b/GUISupport/QtSQL/CMakeLists.txt @@ -9,8 +9,7 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}) # import Qt4 build settings set(QT_USE_QTSQL 1) -find_package(Qt4 REQUIRED QUIET) -include(${QT_USE_FILE}) +find_package(Qt5Transitional REQUIRED QUIET) set(${vtk-module}_NO_HeaderTest 1) vtk_module_library(${vtk-module} ${LibSrcs}) diff --git a/GUISupport/QtWebkit/CMakeLists.txt b/GUISupport/QtWebkit/CMakeLists.txt index 5f9841e..d566a3c 100644 --- a/GUISupport/QtWebkit/CMakeLists.txt +++ b/GUISupport/QtWebkit/CMakeLists.txt @@ -1,4 +1,4 @@ -find_package(Qt4 REQUIRED QtCore QtGui QtWebKit QUIET) +find_package(Qt5Transitional REQUIRED Core Gui WebKit Network QUIET) # Rich-text view requires Qt >= 4.5.0 # Rich-text depends on Qt Webkit which is not portable on Unix (AIX & HP-UX) @@ -12,7 +12,6 @@ set(QT_USE_QTWEBKIT 1) # import Qt4 build settings set(QT_USE_QTNETWORK 1) -include(${QT_USE_FILE}) qt4_wrap_cpp(LibMocSrcs ${MocHeaders}) diff --git a/GUISupport/QtWebkit/vtkQtRichTextView.cxx b/GUISupport/QtWebkit/vtkQtRichTextView.cxx index f117047..0ac1355 100644 --- a/GUISupport/QtWebkit/vtkQtRichTextView.cxx +++ b/GUISupport/QtWebkit/vtkQtRichTextView.cxx @@ -51,8 +51,6 @@ PURPOSE. See the above copyright notice for more information. #include <QWebHistory> #include <QWebPage> #include <QWebView> -#include <QHttpHeader> -#include <QHttpRequestHeader> #include <QUrl> vtkStandardNewMacro(vtkQtRichTextView); diff --git a/Rendering/Qt/CMakeLists.txt b/Rendering/Qt/CMakeLists.txt index ddb499e..6b2c909 100644 --- a/Rendering/Qt/CMakeLists.txt +++ b/Rendering/Qt/CMakeLists.txt @@ -7,8 +7,7 @@ set(LibSrcs ) # import Qt4 build settings -find_package(Qt4 REQUIRED QtCore QtGui QUIET) -include(${QT_USE_FILE}) +find_package(Qt5Transitional REQUIRED Core Gui QUIET) vtk_module_library(${vtk-module} ${LibSrcs}) target_link_libraries(${vtk-module} ${QT_LIBRARIES}) diff --git a/Views/Qt/CMakeLists.txt b/Views/Qt/CMakeLists.txt index efb5588..38e14c3 100644 --- a/Views/Qt/CMakeLists.txt +++ b/Views/Qt/CMakeLists.txt @@ -19,8 +19,7 @@ set(MocHeaders # import Qt4 build settings set(QT_USE_QTNETWORK 1) -find_package(Qt4 REQUIRED QUIET) -include(${QT_USE_FILE}) +find_package(Qt5Transitional REQUIRED QUIET) qt4_wrap_cpp(LibMocSrcs ${MocHeaders}) diff --git a/Views/Qt/vtkQtView.cxx b/Views/Qt/vtkQtView.cxx index d9fe0cb..2eeb71d 100644 --- a/Views/Qt/vtkQtView.cxx +++ b/Views/Qt/vtkQtView.cxx @@ -16,6 +16,7 @@ #include <QPixmap> #include "vtkObjectFactory.h" +#include <QWidget> //---------------------------------------------------------------------------- vtkQtView::vtkQtView() @@ -51,5 +52,9 @@ void vtkQtView::ProcessQtEventsNoUserInput() bool vtkQtView::SaveImage(const char* filename) { // This is ok even if this->GetWidget() returns null. - return QPixmap::grabWidget(this->GetWidget()).save(filename); + return QPixmap::grabWidget(this->GetWidget() +#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) + , this->GetWidget()->rect() +#endif + ).save(filename); } -- 1.7.10.4
-- Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake