Difference between revisions of "Documentation/Labs/Qt5-and-VTK8"
From Slicer Wiki
Line 46: | Line 46: | ||
** Update Slicer build instruction on developer wiki | ** Update Slicer build instruction on developer wiki | ||
** on Mac, QT_NO_OPENSSL is defined, but so is QSslError leading to redefined symbol [https://github.com/jcfr/Slicer/blob/1d8aa09e4862c6fe48d9f229a11f151d9ed89cea/Base/QTGUI/qSlicerWebWidget.h#L43](here). | ** on Mac, QT_NO_OPENSSL is defined, but so is QSslError leading to redefined symbol [https://github.com/jcfr/Slicer/blob/1d8aa09e4862c6fe48d9f229a11f151d9ed89cea/Base/QTGUI/qSlicerWebWidget.h#L43](here). | ||
+ | ** Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model. | ||
* PythonQt: <strike>Done {{done}} </strike> | * PythonQt: <strike>Done {{done}} </strike> | ||
** Need to update to Qt 5.7 in [https://sourceforge.net/p/pythonqt/code/HEAD/tree/trunk/ current PythonQt trunk] (currently 5.6) and [https://github.com/commontk/PythonQt CommonTK PythonQt] (currently 5.4) | ** Need to update to Qt 5.7 in [https://sourceforge.net/p/pythonqt/code/HEAD/tree/trunk/ current PythonQt trunk] (currently 5.6) and [https://github.com/commontk/PythonQt CommonTK PythonQt] (currently 5.4) |
Revision as of 18:00, 20 January 2017
Home < Documentation < Labs < Qt5-and-VTK8This page documents the update of Slicer to use Qt 5.
Contents
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
- Work-in-progress branch that partially builds
- Superbuild configure command on mac using Qt 5.7 stock downloads
cmake \ -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \ -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \ -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \ -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \ -DSlicer_USE_SimpleITK:BOOL=OFF \ -DSlicer_USE_QtTesting:BOOL=OFF \ -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \ -DSlicer_QT_VERSION:STRING=5 \ ../Slicer
To Do List
- Slicer build system upgrade: To be done
- Add Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK
- Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)
- Update use of QT4_* macros (see below) - See what is done in CTK
- The QT5_ versions of the macros appear to be directly compatible
- Port from QtWebKit to QtWebEngine
- update PythonQt to the latest Qt version (may require updating to support QWebEngine)
- Fix differences in plugin loading
- Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)
- Add libqcocoa.dylib and libqsqlite.dylib to package for mac
mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/ mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/
- Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )
- Update Slicer build instruction on developer wiki
- on Mac, QT_NO_OPENSSL is defined, but so is QSslError leading to redefined symbol [1](here).
- Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.
- PythonQt:
Done- Need to update to Qt 5.7 in current PythonQt trunk (currently 5.6) and CommonTK PythonQt (currently 5.4)
- VTK
- 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
To do items (partial list):
- update loadable modules to use new plugin macros
- any use of QWebKit needs to switch to QWebEngine
List of extensions that may require updates
TBD (probably all extensions need work)
Future works
NA