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

From Slicer Wiki
Jump to: navigation, search
Line 6: Line 6:
  
 
== Status ==
 
== Status ==
 +
 +
* Slicer build system upgrade: To be done  {{wip}}
 +
** Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK
 +
** Update use of QT4_* macros (see below) - See what is done in CTK
 +
** 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
 +
 +
* PythonQt: Done {{done}}
 +
 +
 +
* CTK support: Done {{done}}
 +
  
 
* VTK
 
* VTK
Line 12: Line 25:
 
*** Not yet required by Slicer core
 
*** Not yet required by Slicer core
 
*** Jc@Kitware: We experimented with few approaches internally.
 
*** Jc@Kitware: We experimented with few approaches internally.
 
 
* CTK support: Done {{done}}
 
  
  
 
* ITKv4: NA {{done}}
 
* ITKv4: NA {{done}}
 
 
* PythonQt: Done {{done}}
 
 
 
* Slicer build system upgrade: To be done  {{wip}}
 
** 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
 
  
  

Revision as of 19:58, 16 August 2016

Home < Documentation < Labs < Qt5-and-VTK8

This page documents the update of Slicer to use Qt 5.

Overview

Because Qt4 is not actively developed (as documented here support ended), we need to work toward supporting Qt5. This page summarizes support status of the various components of Slicer stack and remaining tasks.

Status

  • Slicer build system upgrade: To be done UnderConstruction.png
    • Add Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK
    • Update use of QT4_* macros (see below) - See what is done in CTK
    • 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
  • PythonQt: Done Check.svg


  • CTK support: Done Check.svg


  • VTK
    • Support for QVTKWidget/QVTKWidget2: Done Check.svg
    • QML support for VTK render windows: To Be Done UnderConstruction.png
      • Not yet required by Slicer core
      • Jc@Kitware: We experimented with few approaches internally.


  • ITKv4: NA Check.svg


  • 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)

Migration Guide

NA

List of extensions that may require updates

NA

Future works

NA

References