Difference between revisions of "Documentation/Labs/Qt5-and-VTK8"

From Slicer Wiki
Jump to: navigation, search
Line 7: Line 7:
  
 
* VTK:  
 
* VTK:  
** Basic support: Done
+
** Support for QVTKWidget/QVTKWidget2: Done
*** [https://github.com/Kitware/VTK/commit/384636ec 384636ec - COMP 12945: Allow VTK to build against Qt5]
+
** QML support for VTK render windows: To Be Done - Not yet required by Slicer core - We experimented with few approaches internally and some possible approaches.
*** [https://github.com/Kitware/VTK/commit/e4e3dfa71 e4e3dfa71 - COMP 12945: Fix Qt5 specific build error related to vtkQtCxxTests]
 
*** [https://github.com/Kitware/VTK/commit/c055be00a c055be00a - ENH: Add VTK_QT_VERSION to the VTK global config. options.]
 
*** [https://github.com/Kitware/VTK/commit/eeba833c42 eeba833c42 - Make Qt examples build with either Qt4 or Qt5.]
 
** Quick support: To Be Done
 
  
  
* CTK support: In progress - https://github.com/commontk/CTK/issues/277
+
* CTK support: Done
 +
 
 +
* ITKv4: NA
 +
 
 +
* PythonQt: Done
  
 
* Slicer build system upgrade: To be done
 
* Slicer build system upgrade: To be done
 +
** Add a switch similar to what is done in CTK (Add option Slicer_QT_VERSION that can be set to either 4 or 5)
 +
** Update use of QT4_* macros (see below)
 +
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)
 +
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )
 +
** Update Slicer build instruction on developer wiki
 +
 +
 +
* Usage of QT4_ macros:
 +
 +
<pre>
 +
$ ack --cmake -i "qt4"
 +
CMake/SlicerMacroBuildModuleQtLibrary.cmake
 +
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})
 +
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})
 +
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})
 +
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})
 +
 +
CMake/SlicerMacroTranslation.cmake
 +
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})
 +
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})
 +
 +
CMake/SlicerMacroBuildQtModule.cmake
 +
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})
 +
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})
 +
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})
 +
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})
 +
 +
CMake/SlicerMacroBuildApplication.cmake
 +
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})
 +
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})
 +
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})
 +
 +
CMake/SlicerBlockFindQtAndCheckVersion.cmake
 +
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that
 +
27:  find_package(Qt4)
 +
28:  if(NOT QT4_FOUND)
  
* ITKv4: NA
+
CMake/SlicerMacroBuildBaseQtLibrary.cmake
 +
35:#                          using QT4_WRAP_CPP CMake macro
 +
38:#                          QT4_WRAP_UI CMake macro
 +
47:#                          using QT4_ADD_RESOURCES
 +
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})
 +
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})
 +
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})
 +
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)
 +
 
 +
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt
 +
15:QT4_GENERATE_MOCS(
 +
 
 +
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt
 +
9:QT4_GENERATE_MOCS(
 +
 
 +
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt
 +
36:QT4_GENERATE_MOCS(
 +
 
 +
Libs/MRML/Widgets/CMakeLists.txt
 +
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})
 +
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})
 +
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})
 +
 
 +
Libs/MRML/Widgets/Testing/CMakeLists.txt
 +
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})
 +
140:QT4_GENERATE_MOCS(
 +
 
 +
CMakeLists.txt
 +
570:# Module name should be specified as they appear in FindQt4.cmake
 +
 
 +
Base/QTCore/Testing/Cxx/CMakeLists.txt
 +
37:  QT4_GENERATE_MOCS(
 +
42:    QT4_GENERATE_MOCS(
 +
49:    QT4_GENERATE_MOCS(
 +
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)
 +
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)
  
* PythonQt: In progress - See https://github.com/commontk/PythonQt/tree/add-qt5-support
+
Base/QTGUI/Testing/Cxx/CMakeLists.txt
 +
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})
 +
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)
 +
</pre>
  
 +
== References ==
 
* Qt 4.8 support schedule info: http://slicer-devel.65872.n3.nabble.com/Fwd-Qt-4-8-x-support-extended-out-by-a-year-td4033248.html
 
* Qt 4.8 support schedule info: http://slicer-devel.65872.n3.nabble.com/Fwd-Qt-4-8-x-support-extended-out-by-a-year-td4033248.html

Revision as of 19:40, 16 August 2016

Home < Documentation < Labs < Qt5-and-VTK8

This page will document experiments related to the upgrade of Slicer base to Qt5.


References

Progress

  • VTK:
    • Support for QVTKWidget/QVTKWidget2: Done
    • QML support for VTK render windows: To Be Done - Not yet required by Slicer core - We experimented with few approaches internally and some possible approaches.


  • CTK support: Done
  • ITKv4: NA
  • PythonQt: Done
  • Slicer build system upgrade: To be done
    • Add a switch similar to what is done in CTK (Add option Slicer_QT_VERSION that can be set to either 4 or 5)
    • Update use of QT4_* macros (see below)
    • Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)
    • Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )
    • Update Slicer build instruction on developer wiki


  • Usage of QT4_ macros:
$ ack --cmake -i "qt4"
CMake/SlicerMacroBuildModuleQtLibrary.cmake
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})

CMake/SlicerMacroTranslation.cmake
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})

CMake/SlicerMacroBuildQtModule.cmake
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})

CMake/SlicerMacroBuildApplication.cmake
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})

CMake/SlicerBlockFindQtAndCheckVersion.cmake
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that
27:  find_package(Qt4)
28:  if(NOT QT4_FOUND)

CMake/SlicerMacroBuildBaseQtLibrary.cmake
35:#                           using QT4_WRAP_CPP CMake macro
38:#                           QT4_WRAP_UI CMake macro
47:#                           using QT4_ADD_RESOURCES
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)

Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt
15:QT4_GENERATE_MOCS(

Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt
9:QT4_GENERATE_MOCS(

Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt
36:QT4_GENERATE_MOCS(

Libs/MRML/Widgets/CMakeLists.txt
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})

Libs/MRML/Widgets/Testing/CMakeLists.txt
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})
140:QT4_GENERATE_MOCS(

CMakeLists.txt
570:# Module name should be specified as they appear in FindQt4.cmake

Base/QTCore/Testing/Cxx/CMakeLists.txt
37:  QT4_GENERATE_MOCS(
42:    QT4_GENERATE_MOCS(
49:    QT4_GENERATE_MOCS(
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)

Base/QTGUI/Testing/Cxx/CMakeLists.txt
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)

References