<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.slicer.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Max.smolens&amp;*</id>
	<title>Slicer Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.slicer.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Max.smolens&amp;*"/>
	<link rel="alternate" type="text/html" href="https://www.slicer.org/wiki/Special:Contributions/Max.smolens"/>
	<updated>2026-04-15T06:58:27Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54374</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54374"/>
		<updated>2017-08-15T17:43:11Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* SimpleITK issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ here] support ended), we need to work toward supporting Qt5. &lt;br /&gt;
&lt;br /&gt;
Similarly because VTK7 is not actively developed, we need to work toward supporting VTK8 and the OpenGL2 rendering backend.&lt;br /&gt;
&lt;br /&gt;
This page summarizes support status of the various components of Slicer stack and remaining tasks.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
=== 2017-08-14 ===&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-14, the support for Qt5 and VTK8 has been integrated into the trunk.&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will automatically build VTK8 with OpenGL2 backend enabled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Command line arguments to expose webgl and webengine debugging:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== General issues ====&lt;br /&gt;
&lt;br /&gt;
* Debug build runs very slowly - can it be improved? Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
&lt;br /&gt;
==== VTK issues====&lt;br /&gt;
&lt;br /&gt;
* Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
* &amp;lt;del&amp;gt;Merge and update VTK: QVTKOpenGLWidget can blit uninitialized framebuffers. On Mac, the bug is evident through visible artifacts when resizing the views.&amp;lt;/del&amp;gt; Merged in  https://gitlab.kitware.com/vtk/vtk/merge_requests/3138.&lt;br /&gt;
&lt;br /&gt;
==== Slicer issues ====&lt;br /&gt;
&lt;br /&gt;
* Packaging&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
** Linux:&lt;br /&gt;
*** needed to manually copy shared libraries:&lt;br /&gt;
**** libasound.so.2&lt;br /&gt;
**** libxslt.so.1&lt;br /&gt;
**** libsmime3&lt;br /&gt;
**** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
*** like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
** Mac:&lt;br /&gt;
*** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
***:&amp;lt;pre&amp;gt;&lt;br /&gt;
***::mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
***::cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
***::mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
***::cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
***:&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
* &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
* Test with Qt5.9.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Build shows errors in console at start:&lt;br /&gt;
**:&amp;lt;pre&amp;gt;&lt;br /&gt;
**::Failed to obtain reference to 'FileMenu'&lt;br /&gt;
**::Failed to obtain reference to 'qSlicerAppMainWindow'&lt;br /&gt;
**::No Data Probe frame - cannot create DataProbe&lt;br /&gt;
**::Failed to obtain reference to 'qSlicerAppMainWindow'&lt;br /&gt;
**::Failed to obtain reference to 'FileMenu'&lt;br /&gt;
**:&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
&lt;br /&gt;
* Fix Slicer test failures:&lt;br /&gt;
** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
** py_LandmarkRegistration crash on exit.&lt;br /&gt;
** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Linux: fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
==== SimpleITK issues ====&lt;br /&gt;
&lt;br /&gt;
* SimpleITK doesn't recognize standard CMake way to enable C++11. See https://github.com/SimpleITK/SimpleITK/issues/260.&lt;br /&gt;
** Upstream fix: https://github.com/SimpleITK/SimpleITK/pull/261&lt;br /&gt;
&lt;br /&gt;
==== CTK issues ====&lt;br /&gt;
&lt;br /&gt;
* Fix CTK warnings. See http://slicer.cdash.org/viewBuildError.php?type=1&amp;amp;buildid=1076772&lt;br /&gt;
&lt;br /&gt;
=== 2017-08-07 ===&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* &amp;lt;del&amp;gt;Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&amp;lt;/del&amp;gt; - Integrated in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26268 r26268]&lt;br /&gt;
** &amp;lt;del&amp;gt;old branches&amp;lt;/del&amp;gt;:&lt;br /&gt;
*** &amp;lt;del&amp;gt;https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&amp;lt;/del&amp;gt; - Integrated in CTK as [https://github.com/commontk/CTK/commit/1066374b63b6907797ee14b35196829216fbc3dd commontk/CTK@1066374], integrated in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26224 r26224]&lt;br /&gt;
* &amp;lt;del&amp;gt;VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* &amp;lt;del&amp;gt;PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* &amp;lt;del&amp;gt;AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&amp;lt;/del&amp;gt; - Integrated in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26217 r26217]&lt;br /&gt;
* &amp;lt;del&amp;gt;MultiVolumeExplorer: https://github.com/msmolens/MultiVolumeExplorer/tree/support-qt5&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** &amp;lt;del&amp;gt;OpenIGTLinkIF&amp;lt;/del&amp;gt; Updated in https://github.com/openigtlink/OpenIGTLinkIF/pull/72&lt;br /&gt;
**** &amp;lt;del&amp;gt;MultiVolumeExplorer&amp;lt;/del&amp;gt; Updated in https://github.com/fedorov/MultiVolumeExplorer/pull/36.&lt;br /&gt;
**** &amp;lt;del&amp;gt;ParameterSerializer&amp;lt;/del&amp;gt; Updated in https://github.com/Slicer/ParameterSerializer/pull/7.&lt;br /&gt;
**** &amp;lt;del&amp;gt;EMSegment&amp;lt;/del&amp;gt; Updated in [http://viewvc.slicer.org/viewvc.cgi/Slicer3?view=revision&amp;amp;revision=17135 r17135]. Integrated in Slicer in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26228 r26228]&lt;br /&gt;
**** &amp;lt;del&amp;gt;OpenIGTLinkIF&amp;lt;/del&amp;gt; - Integrated  in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26227 r26227] (Changes available in [https://github.com/Slicer/OpenIGTLinkIF Slicer/OpenIGTLinkIF] - Pending PR: &amp;lt;del&amp;gt;[https://github.com/openigtlink/OpenIGTLinkIF/pull/70 #70]&amp;lt;/del&amp;gt;, &amp;lt;del&amp;gt;[https://github.com/openigtlink/OpenIGTLinkIF/pull/71 #71]&amp;lt;/del&amp;gt;, [https://github.com/openigtlink/OpenIGTLinkIF/pull/72 #72], &amp;lt;del&amp;gt;[https://github.com/openigtlink/OpenIGTLinkIF/pull/73 #73]&amp;lt;/del&amp;gt; and [https://github.com/openigtlink/OpenIGTLinkIF/pull/74 #74]&lt;br /&gt;
**** SlicerExecutionModel&lt;br /&gt;
**** &amp;lt;del&amp;gt;DataStore (see https://github.com/Slicer/Slicer-DataStore/pull/3)&amp;lt;/del&amp;gt; - Integrated in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26229 r26229]&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: QVTKOpenGLWidget can blit uninitialized framebuffers. On Mac, the bug is evident through visible artifacts when resizing the views.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3138.&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL backend.&amp;lt;/del&amp;gt; - Changes integrated into the trunk and tested daily&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Update MultiVolumeExplorer hash for Qt5 support.&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076299&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015:&lt;br /&gt;
**** &amp;lt;del&amp;gt;Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&amp;lt;/del&amp;gt;&lt;br /&gt;
**** &amp;lt;del&amp;gt;Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&amp;lt;/del&amp;gt;&lt;br /&gt;
**** &amp;lt;del&amp;gt;DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&amp;lt;/del&amp;gt;&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
&lt;br /&gt;
* MacOSX:&lt;br /&gt;
** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076538&lt;br /&gt;
*** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2017-08-02 ===&lt;br /&gt;
&lt;br /&gt;
* Linux:&lt;br /&gt;
** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2017-01 ===&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
=== 2016-12 ===&lt;br /&gt;
&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Platform Notes ====&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
==== Known Issues ====&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
==== To Do List ====&lt;br /&gt;
&lt;br /&gt;
===== All platforms =====&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;del&amp;gt;[https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&amp;lt;/del&amp;gt;&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;del&amp;gt;Look at updating PythonQt to support QWebEngine&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Linux =====&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
===== Mac =====&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;del&amp;gt;Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d &amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Windows =====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;del&amp;gt;add declspec exports/imports&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;create .lib for use in QTGUI&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;support shared/static build?&amp;lt;/del&amp;gt;&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* &amp;lt;del&amp;gt;Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;&amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;del&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
This section lists categories of code changes necessary to build and run Slicer with VTK 8.0 and Qt5. Each category has a short description, a suggested upgrade path, and references to relevant commits (TBD once merged).&lt;br /&gt;
&lt;br /&gt;
===Qt5: Update loadable modules to use new plugin macros===&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
===Qt5: any use of QWebKit needs to switch to QWebEngine===&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
===VTK8: Use hierarchy files for VTK Python wrapping===&lt;br /&gt;
&lt;br /&gt;
In VTK8 it's necessary to generate hierarchy files for proper wrapping VTK classes in Python. Without the information provided by the hierarchy files, the Python wrapping tool lacks complete information about classes and types. In this case, the generated classes contain methods that shouldn't be wrapped and fail to compile, and include references to types such as &amp;lt;tt&amp;gt;vtkTypeBool&amp;lt;/tt&amp;gt;. Once the hierarchy files are generated and provided to the Python wrapping tool, the generated classes compile and typedefs like &amp;lt;tt&amp;gt;vtkTypeBool&amp;lt;/tt&amp;gt; are correctly resolved.&lt;br /&gt;
&lt;br /&gt;
Once the VTK8 changes are merged, generating hierarchy files is handled by https://github.com/Slicer/Slicer/blob/master/CMake/vtkMacroKitPythonWrap.cmake.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;References:&amp;lt;/b&amp;gt;&lt;br /&gt;
* http://www.vtk.org/Wiki/VTK/WrapHierarchy&lt;br /&gt;
&lt;br /&gt;
===VTK8: Call InitializeObjectBase() in vtkObject New() methods===&lt;br /&gt;
&lt;br /&gt;
In VTK8 it's necessary for &amp;lt;tt&amp;gt;vtkObject&amp;lt;/tt&amp;gt; &amp;lt;tt&amp;gt;New()&amp;lt;/tt&amp;gt; methods to call &amp;lt;tt&amp;gt;InitializeObjectBase()&amp;lt;/tt&amp;gt; on the new object for proper tracking with &amp;lt;tt&amp;gt;vtkDebugLeaks&amp;lt;/tt&amp;gt;. The standard macros (&amp;lt;tt&amp;gt;vtkStandardNewMacro&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;vtkObjectFactoryNewMacro&amp;lt;/tt&amp;gt;) handle this. For those classes that don't use the macros, add a call to &amp;lt;tt&amp;gt;InitializeObjectBase()&amp;lt;/tt&amp;gt; immediately after constructing the object by &amp;lt;tt&amp;gt;new vtkXXX()&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, &amp;lt;tt&amp;gt;vtkObjectFactory::CreateInstance()&amp;lt;/tt&amp;gt; now doesn't register the class name with vtkDebugLeaks if the factory fails to create the object. Therefore, it's no longer necessary to unregister the class name with vtkDebugLeaks. Remove calls to &amp;lt;tt&amp;gt;vtkDebugLeaks::DestructClass(className)&amp;lt;/tt&amp;gt; following &amp;lt;tt&amp;gt;vtkObjectFactory::CreateInstance()&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To support both VTK8 and earlier versions of VTK, wrap these changes in preprocessor checks for whether &amp;lt;tt&amp;gt;VTK_HAS_INITIALIZE_OBJECT_BASE&amp;lt;/tt&amp;gt; is defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;References:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://github.com/Kitware/VTK/commit/e5c793dbdf87e838bb2b60c6a5905ced0e5548f9&lt;br /&gt;
* http://public.kitware.com/pipermail/vtk-developers/2016-September/034332.html&lt;br /&gt;
&lt;br /&gt;
===VTK8: Add C++11 keywords===&lt;br /&gt;
&lt;br /&gt;
VTK8 requires C++11. Subclasses of VTK classes must mark overridden methods with &amp;lt;tt&amp;gt;VTK_OVERRIDE&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Qt5: QVTKOpenGLWidget===&lt;br /&gt;
&lt;br /&gt;
When using Qt5, [https://github.com/Kitware/VTK/blob/9393774ff9b3d735a40eb445ff6c045e55c90eae/GUISupport/Qt/QVTKOpenGLWidget.h QVTKOpenGLWidget] should be used in place of QVTKGLWidget. To ensure that QVTKOpenGLWidget receives a properly configured OpenGL context it's necessary to call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance. QVTKOpenGLWidget::defaultFormat() supplies a suitable format, although it's recommended to disable multisampling for full compatibility with advanced rendering techniques. See http://doc.qt.io/qt-5/qopenglwidget.html.&lt;br /&gt;
&lt;br /&gt;
===VTK8: vtkWindowToImageFilter::SetMagnification() is deprecated===&lt;br /&gt;
&lt;br /&gt;
VTK8.1 deprecated vtkWindowToImageFilter::SetMagnification() and vtkWindowToImageFilter::GetMagnification(). Replace calls to those methods with SetScale() and GetScale(). See https://github.com/Kitware/VTK/commit/af0a95fa7dd4e25ef869a0bc6077e547f18baa29.&lt;br /&gt;
&lt;br /&gt;
===Enable C++11 in extensions===&lt;br /&gt;
&lt;br /&gt;
SuperBuild extensions may have to enable C++11 for their external projects. Add the following lines to &amp;lt;tt&amp;gt;CMAKE_CACHE_ARGS&amp;lt;/tt&amp;gt; in &amp;lt;tt&amp;gt;ExternalProject_Add&amp;lt;/tt&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    -DCMAKE_CXX_STANDARD:STRING=${CMAKE_CXX_STANDARD}&lt;br /&gt;
    -DCMAKE_CXX_STANDARD_REQUIRED:BOOL=${CMAKE_CXX_STANDARD_REQUIRED}&lt;br /&gt;
    -DCMAKE_CXX_EXTENSIONS:BOOL=${CMAKE_CXX_EXTENSIONS}&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;br /&gt;
* [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine]&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54293</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54293"/>
		<updated>2017-08-14T21:38:55Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Slicer issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ here] support ended), we need to work toward supporting Qt5. &lt;br /&gt;
&lt;br /&gt;
Similarly because VTK7 is not actively developed, we need to work toward supporting VTK8 and the OpenGL2 rendering backend.&lt;br /&gt;
&lt;br /&gt;
This page summarizes support status of the various components of Slicer stack and remaining tasks.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
=== 2017-08-14 ===&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-14, the support for Qt5 and VTK8 has been integrated into the trunk.&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will automatically build VTK8 with OpenGL2 backend enabled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Command line arguments to expose webgl and webengine debugging:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== VTK issues====&lt;br /&gt;
&lt;br /&gt;
* Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
* Merge and update VTK: QVTKOpenGLWidget can blit uninitialized framebuffers. On Mac, the bug is evident through visible artifacts when resizing the views. See https://gitlab.kitware.com/vtk/vtk/merge_requests/3138.&lt;br /&gt;
&lt;br /&gt;
==== Slicer issues ====&lt;br /&gt;
&lt;br /&gt;
* Packaging&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
* &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
* Test with Qt5.9.1&lt;br /&gt;
** Linux: Done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Fix startup error:&lt;br /&gt;
**:&amp;lt;pre&amp;gt;&lt;br /&gt;
**::Failed to obtain reference to 'FileMenu'&lt;br /&gt;
**::Failed to obtain reference to 'qSlicerAppMainWindow'&lt;br /&gt;
**::No Data Probe frame - cannot create DataProbe&lt;br /&gt;
**::Failed to obtain reference to 'qSlicerAppMainWindow'&lt;br /&gt;
**::Failed to obtain reference to 'FileMenu'&lt;br /&gt;
**:&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
&lt;br /&gt;
* Fix Slicer test failures:&lt;br /&gt;
** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
** py_LandmarkRegistration crash on exit.&lt;br /&gt;
** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
&lt;br /&gt;
* SimpleITK doesn't recognize standard CMake way to enable C++11. See https://github.com/SimpleITK/SimpleITK/issues/260.&lt;br /&gt;
&lt;br /&gt;
==== CTK issues ====&lt;br /&gt;
&lt;br /&gt;
* Fix CTK warnings. See http://slicer.cdash.org/viewBuildError.php?type=1&amp;amp;buildid=1076772&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2017-08-07 ===&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* &amp;lt;del&amp;gt;Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&amp;lt;/del&amp;gt; - Integrated in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26268 r26268]&lt;br /&gt;
** &amp;lt;del&amp;gt;old branches&amp;lt;/del&amp;gt;:&lt;br /&gt;
*** &amp;lt;del&amp;gt;https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&amp;lt;/del&amp;gt; - Integrated in CTK as [https://github.com/commontk/CTK/commit/1066374b63b6907797ee14b35196829216fbc3dd commontk/CTK@1066374], integrated in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26224 r26224]&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* &amp;lt;del&amp;gt;PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* &amp;lt;del&amp;gt;AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&amp;lt;/del&amp;gt; - Integrated in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26217 r26217]&lt;br /&gt;
* &amp;lt;del&amp;gt;MultiVolumeExplorer: https://github.com/msmolens/MultiVolumeExplorer/tree/support-qt5&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** &amp;lt;del&amp;gt;OpenIGTLinkIF&amp;lt;/del&amp;gt; Updated in https://github.com/openigtlink/OpenIGTLinkIF/pull/72&lt;br /&gt;
**** &amp;lt;del&amp;gt;MultiVolumeExplorer&amp;lt;/del&amp;gt; Updated in https://github.com/fedorov/MultiVolumeExplorer/pull/36.&lt;br /&gt;
**** &amp;lt;del&amp;gt;ParameterSerializer&amp;lt;/del&amp;gt; Updated in https://github.com/Slicer/ParameterSerializer/pull/7.&lt;br /&gt;
**** &amp;lt;del&amp;gt;EMSegment&amp;lt;/del&amp;gt; Updated in [http://viewvc.slicer.org/viewvc.cgi/Slicer3?view=revision&amp;amp;revision=17135 r17135]. Integrated in Slicer in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26228 r26228]&lt;br /&gt;
**** &amp;lt;del&amp;gt;OpenIGTLinkIF&amp;lt;/del&amp;gt; - Integrated  in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26227 r26227] (Changes available in [https://github.com/Slicer/OpenIGTLinkIF Slicer/OpenIGTLinkIF] - Pending PR: &amp;lt;del&amp;gt;[https://github.com/openigtlink/OpenIGTLinkIF/pull/70 #70]&amp;lt;/del&amp;gt;, &amp;lt;del&amp;gt;[https://github.com/openigtlink/OpenIGTLinkIF/pull/71 #71]&amp;lt;/del&amp;gt;, [https://github.com/openigtlink/OpenIGTLinkIF/pull/72 #72], &amp;lt;del&amp;gt;[https://github.com/openigtlink/OpenIGTLinkIF/pull/73 #73]&amp;lt;/del&amp;gt; and [https://github.com/openigtlink/OpenIGTLinkIF/pull/74 #74]&lt;br /&gt;
**** SlicerExecutionModel&lt;br /&gt;
**** &amp;lt;del&amp;gt;DataStore (see https://github.com/Slicer/Slicer-DataStore/pull/3)&amp;lt;/del&amp;gt; - Integrated in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26229 r26229]&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11. See https://github.com/SimpleITK/SimpleITK/issues/260.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** Merge and update VTK: QVTKOpenGLWidget can blit uninitialized framebuffers. On Mac, the bug is evident through visible artifacts when resizing the views. See https://gitlab.kitware.com/vtk/vtk/merge_requests/3138.&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015. Build shows errors in console at start:&lt;br /&gt;
**:&amp;lt;pre&amp;gt;&lt;br /&gt;
**::Failed to obtain reference to 'FileMenu'&lt;br /&gt;
**::Failed to obtain reference to 'qSlicerAppMainWindow'&lt;br /&gt;
**::No Data Probe frame - cannot create DataProbe&lt;br /&gt;
**::Failed to obtain reference to 'qSlicerAppMainWindow'&lt;br /&gt;
**::Failed to obtain reference to 'FileMenu'&lt;br /&gt;
**:&amp;lt;/pre&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Update MultiVolumeExplorer hash for Qt5 support.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix CTK warnings. See http://slicer.cdash.org/viewBuildError.php?type=1&amp;amp;buildid=1076772.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076299&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015:&lt;br /&gt;
**** &amp;lt;del&amp;gt;Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&amp;lt;/del&amp;gt;&lt;br /&gt;
**** &amp;lt;del&amp;gt;Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&amp;lt;/del&amp;gt;&lt;br /&gt;
**** &amp;lt;del&amp;gt;DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&amp;lt;/del&amp;gt;&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
&lt;br /&gt;
* MacOSX:&lt;br /&gt;
** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076538&lt;br /&gt;
*** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2017-08-02 ===&lt;br /&gt;
&lt;br /&gt;
* Linux:&lt;br /&gt;
** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2017-01 ===&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
=== 2016-12 ===&lt;br /&gt;
&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Platform Notes ====&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
==== Known Issues ====&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
==== To Do List ====&lt;br /&gt;
&lt;br /&gt;
===== All platforms =====&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;del&amp;gt;[https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&amp;lt;/del&amp;gt;&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;del&amp;gt;Look at updating PythonQt to support QWebEngine&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Linux =====&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
===== Mac =====&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;del&amp;gt;Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d &amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Windows =====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;del&amp;gt;add declspec exports/imports&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;create .lib for use in QTGUI&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;support shared/static build?&amp;lt;/del&amp;gt;&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* &amp;lt;del&amp;gt;Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;&amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;del&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
This section lists categories of code changes necessary to build and run Slicer with VTK 8.0 and Qt5. Each category has a short description, a suggested upgrade path, and references to relevant commits (TBD once merged).&lt;br /&gt;
&lt;br /&gt;
===Qt5: Update loadable modules to use new plugin macros===&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
===Qt5: any use of QWebKit needs to switch to QWebEngine===&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
===VTK8: Use hierarchy files for VTK Python wrapping===&lt;br /&gt;
&lt;br /&gt;
In VTK8 it's necessary to generate hierarchy files for proper wrapping VTK classes in Python. Without the information provided by the hierarchy files, the Python wrapping tool lacks complete information about classes and types. In this case, the generated classes contain methods that shouldn't be wrapped and fail to compile, and include references to types such as &amp;lt;tt&amp;gt;vtkTypeBool&amp;lt;/tt&amp;gt;. Once the hierarchy files are generated and provided to the Python wrapping tool, the generated classes compile and typedefs like &amp;lt;tt&amp;gt;vtkTypeBool&amp;lt;/tt&amp;gt; are correctly resolved.&lt;br /&gt;
&lt;br /&gt;
Once the VTK8 changes are merged, generating hierarchy files is handled by https://github.com/Slicer/Slicer/blob/master/CMake/vtkMacroKitPythonWrap.cmake.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;References:&amp;lt;/b&amp;gt;&lt;br /&gt;
* http://www.vtk.org/Wiki/VTK/WrapHierarchy&lt;br /&gt;
&lt;br /&gt;
===VTK8: Call InitializeObjectBase() in vtkObject New() methods===&lt;br /&gt;
&lt;br /&gt;
In VTK8 it's necessary for &amp;lt;tt&amp;gt;vtkObject&amp;lt;/tt&amp;gt; &amp;lt;tt&amp;gt;New()&amp;lt;/tt&amp;gt; methods to call &amp;lt;tt&amp;gt;InitializeObjectBase()&amp;lt;/tt&amp;gt; on the new object for proper tracking with &amp;lt;tt&amp;gt;vtkDebugLeaks&amp;lt;/tt&amp;gt;. The standard macros (&amp;lt;tt&amp;gt;vtkStandardNewMacro&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;vtkObjectFactoryNewMacro&amp;lt;/tt&amp;gt;) handle this. For those classes that don't use the macros, add a call to &amp;lt;tt&amp;gt;InitializeObjectBase()&amp;lt;/tt&amp;gt; immediately after constructing the object by &amp;lt;tt&amp;gt;new vtkXXX()&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, &amp;lt;tt&amp;gt;vtkObjectFactory::CreateInstance()&amp;lt;/tt&amp;gt; now doesn't register the class name with vtkDebugLeaks if the factory fails to create the object. Therefore, it's no longer necessary to unregister the class name with vtkDebugLeaks. Remove calls to &amp;lt;tt&amp;gt;vtkDebugLeaks::DestructClass(className)&amp;lt;/tt&amp;gt; following &amp;lt;tt&amp;gt;vtkObjectFactory::CreateInstance()&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To support both VTK8 and earlier versions of VTK, wrap these changes in preprocessor checks for whether &amp;lt;tt&amp;gt;VTK_HAS_INITIALIZE_OBJECT_BASE&amp;lt;/tt&amp;gt; is defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;References:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://github.com/Kitware/VTK/commit/e5c793dbdf87e838bb2b60c6a5905ced0e5548f9&lt;br /&gt;
* http://public.kitware.com/pipermail/vtk-developers/2016-September/034332.html&lt;br /&gt;
&lt;br /&gt;
===VTK8: Add C++11 keywords===&lt;br /&gt;
&lt;br /&gt;
VTK8 requires C++11. Subclasses of VTK classes must mark overridden methods with &amp;lt;tt&amp;gt;VTK_OVERRIDE&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Qt5: QVTKOpenGLWidget===&lt;br /&gt;
&lt;br /&gt;
When using Qt5, [https://github.com/Kitware/VTK/blob/9393774ff9b3d735a40eb445ff6c045e55c90eae/GUISupport/Qt/QVTKOpenGLWidget.h QVTKOpenGLWidget] should be used in place of QVTKGLWidget. To ensure that QVTKOpenGLWidget receives a properly configured OpenGL context it's necessary to call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance. QVTKOpenGLWidget::defaultFormat() supplies a suitable format, although it's recommended to disable multisampling for full compatibility with advanced rendering techniques. See http://doc.qt.io/qt-5/qopenglwidget.html.&lt;br /&gt;
&lt;br /&gt;
===VTK8: vtkWindowToImageFilter::SetMagnification() is deprecated===&lt;br /&gt;
&lt;br /&gt;
VTK8.1 deprecated vtkWindowToImageFilter::SetMagnification() and vtkWindowToImageFilter::GetMagnification(). Replace calls to those methods with SetScale() and GetScale(). See https://github.com/Kitware/VTK/commit/af0a95fa7dd4e25ef869a0bc6077e547f18baa29.&lt;br /&gt;
&lt;br /&gt;
===Enable C++11 in extensions===&lt;br /&gt;
&lt;br /&gt;
SuperBuild extensions may have to enable C++11 for their external projects. Add the following lines to &amp;lt;tt&amp;gt;CMAKE_CACHE_ARGS&amp;lt;/tt&amp;gt; in &amp;lt;tt&amp;gt;ExternalProject_Add&amp;lt;/tt&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    -DCMAKE_CXX_STANDARD:STRING=${CMAKE_CXX_STANDARD}&lt;br /&gt;
    -DCMAKE_CXX_STANDARD_REQUIRED:BOOL=${CMAKE_CXX_STANDARD_REQUIRED}&lt;br /&gt;
    -DCMAKE_CXX_EXTENSIONS:BOOL=${CMAKE_CXX_EXTENSIONS}&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;br /&gt;
* [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine]&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54159</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54159"/>
		<updated>2017-08-11T21:03:19Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&amp;lt;/del&amp;gt; - Integrated in CTK as [https://github.com/commontk/CTK/commit/1066374b63b6907797ee14b35196829216fbc3dd commontk/CTK@1066374], integrated in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26224 r26224]&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* &amp;lt;del&amp;gt;PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* &amp;lt;del&amp;gt;AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&amp;lt;/del&amp;gt; - Integrated in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26217 r26217]&lt;br /&gt;
* &amp;lt;del&amp;gt;MultiVolumeExplorer: https://github.com/msmolens/MultiVolumeExplorer/tree/support-qt5&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** &amp;lt;del&amp;gt;OpenIGTLinkIF&amp;lt;/del&amp;gt; Updated in https://github.com/openigtlink/OpenIGTLinkIF/pull/72&lt;br /&gt;
**** &amp;lt;del&amp;gt;MultiVolumeExplorer&amp;lt;/del&amp;gt; Updated in https://github.com/fedorov/MultiVolumeExplorer/pull/36.&lt;br /&gt;
**** &amp;lt;del&amp;gt;ParameterSerializer&amp;lt;/del&amp;gt; Updated in https://github.com/Slicer/ParameterSerializer/pull/7.&lt;br /&gt;
**** &amp;lt;del&amp;gt;EMSegment&amp;lt;/del&amp;gt; Updated in [http://viewvc.slicer.org/viewvc.cgi/Slicer3?view=revision&amp;amp;revision=17135 r17135]. Integrated in Slicer in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26228 r26228]&lt;br /&gt;
**** &amp;lt;del&amp;gt;OpenIGTLinkIF&amp;lt;/del&amp;gt; - Integrated  in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26227 r26227] (Changes available in [https://github.com/Slicer/OpenIGTLinkIF Slicer/OpenIGTLinkIF] - Pending PR: &amp;lt;del&amp;gt;[https://github.com/openigtlink/OpenIGTLinkIF/pull/70 #70]&amp;lt;/del&amp;gt;, &amp;lt;del&amp;gt;[https://github.com/openigtlink/OpenIGTLinkIF/pull/71 #71]&amp;lt;/del&amp;gt;, [https://github.com/openigtlink/OpenIGTLinkIF/pull/72 #72], &amp;lt;del&amp;gt;[https://github.com/openigtlink/OpenIGTLinkIF/pull/73 #73]&amp;lt;/del&amp;gt; and [https://github.com/openigtlink/OpenIGTLinkIF/pull/74 #74]&lt;br /&gt;
**** SlicerExecutionModel&lt;br /&gt;
**** &amp;lt;del&amp;gt;DataStore (see https://github.com/Slicer/Slicer-DataStore/pull/3)&amp;lt;/del&amp;gt; - Integrated in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26229 r26229]&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11. See https://github.com/SimpleITK/SimpleITK/issues/260.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** Merge and update VTK: QVTKOpenGLWidget can blit uninitialized framebuffers. On Mac, the bug is evident through visible artifacts when resizing the views. See https://gitlab.kitware.com/vtk/vtk/merge_requests/3138.&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015. Build shows errors in console at start:&lt;br /&gt;
**:&amp;lt;pre&amp;gt;&lt;br /&gt;
**::Failed to obtain reference to 'FileMenu'&lt;br /&gt;
**::Failed to obtain reference to 'qSlicerAppMainWindow'&lt;br /&gt;
**::No Data Probe frame - cannot create DataProbe&lt;br /&gt;
**::Failed to obtain reference to 'qSlicerAppMainWindow'&lt;br /&gt;
**::Failed to obtain reference to 'FileMenu'&lt;br /&gt;
** &amp;lt;del&amp;gt;Update MultiVolumeExplorer hash for Qt5 support.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix CTK warnings. See http://slicer.cdash.org/viewBuildError.php?type=1&amp;amp;buildid=1076772.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076299&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076538&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54145</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54145"/>
		<updated>2017-08-11T13:46:04Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&amp;lt;/del&amp;gt; - Integrated in CTK as [https://github.com/commontk/CTK/commit/1066374b63b6907797ee14b35196829216fbc3dd commontk/CTK@1066374], integrated in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26224 r26224]&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* &amp;lt;del&amp;gt;PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* &amp;lt;del&amp;gt;AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&amp;lt;/del&amp;gt; - Integrated in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26217 r26217]&lt;br /&gt;
* &amp;lt;del&amp;gt;MultiVolumeExplorer: https://github.com/msmolens/MultiVolumeExplorer/tree/support-qt5&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** &amp;lt;del&amp;gt;OpenIGTLinkIF&amp;lt;/del&amp;gt; Uopdated in https://github.com/openigtlink/OpenIGTLinkIF/pull/72&lt;br /&gt;
**** &amp;lt;del&amp;gt;MultiVolumeExplorer&amp;lt;/del&amp;gt; Updated in https://github.com/fedorov/MultiVolumeExplorer/pull/36.&lt;br /&gt;
**** &amp;lt;del&amp;gt;ParameterSerializer&amp;lt;/del&amp;gt; Updated in https://github.com/Slicer/ParameterSerializer/pull/7.&lt;br /&gt;
**** &amp;lt;del&amp;gt;EMSegment&amp;lt;/del&amp;gt; Updated in [http://viewvc.slicer.org/viewvc.cgi/Slicer3?view=revision&amp;amp;revision=17135 r17135]. Integrated in Slicer in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26228 r26228]&lt;br /&gt;
**** &amp;lt;del&amp;gt;OpenIGTLinkIF&amp;lt;/del&amp;gt; - Integrated  in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26227 r26227] (Changes available in [https://github.com/Slicer/OpenIGTLinkIF Slicer/OpenIGTLinkIF] - Pending PR: [https://github.com/openigtlink/OpenIGTLinkIF/pull/70 #70], [https://github.com/openigtlink/OpenIGTLinkIF/pull/71 #71], [https://github.com/openigtlink/OpenIGTLinkIF/pull/72 #72], [https://github.com/openigtlink/OpenIGTLinkIF/pull/73 #73] and [https://github.com/openigtlink/OpenIGTLinkIF/pull/74 #74]&lt;br /&gt;
**** SlicerExecutionModel&lt;br /&gt;
**** &amp;lt;del&amp;gt;DataStore (see https://github.com/Slicer/Slicer-DataStore/pull/3)&amp;lt;/del&amp;gt; - Integrated in Slicer as [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26229 r26229]&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11. See https://github.com/SimpleITK/SimpleITK/issues/260.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** Merge and update VTK: QVTKOpenGLWidget can blit uninitialized framebuffers. On Mac, the bug is evident through visible artifacts when resizing the views. See https://gitlab.kitware.com/vtk/vtk/merge_requests/3138.&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** &amp;lt;del&amp;gt;Update MultiVolumeExplorer hash for Qt5 support.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix CTK warnings. See http://slicer.cdash.org/viewBuildError.php?type=1&amp;amp;buildid=1076772.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076299&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076538&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54125</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54125"/>
		<updated>2017-08-10T21:16:32Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* &amp;lt;del&amp;gt;PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* &amp;lt;del&amp;gt;AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26217 r26217]&lt;br /&gt;
* &amp;lt;del&amp;gt;MultiVolumeExplorer: https://github.com/msmolens/MultiVolumeExplorer/tree/support-qt5&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** OpenIGTLinkIF (see https://github.com/openigtlink/OpenIGTLinkIF/pull/72)&lt;br /&gt;
**** &amp;lt;del&amp;gt;MultiVolumeExplorer&amp;lt;/del&amp;gt; Updated in https://github.com/fedorov/MultiVolumeExplorer/pull/36.&lt;br /&gt;
**** &amp;lt;del&amp;gt;ParameterSerializer&amp;lt;/del&amp;gt; Updated in https://github.com/Slicer/ParameterSerializer/pull/7.&lt;br /&gt;
**** &amp;lt;del&amp;gt;EMSegment&amp;lt;/del&amp;gt; Updated in r17135.&lt;br /&gt;
**** SlicerExecutionModel&lt;br /&gt;
**** DataStore (see https://github.com/Slicer/Slicer-DataStore/pull/3).&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11. See https://github.com/SimpleITK/SimpleITK/issues/260.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** Fix and update VTK: QVTKOpenGLWidget can blit uninitialized framebuffers. On Mac, the bug is evident through visible artifacts when resizing the views. See https://gitlab.kitware.com/vtk/vtk/merge_requests/3138.&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** &amp;lt;del&amp;gt;Update MultiVolumeExplorer hash for Qt5 support.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix CTK warnings. See http://slicer.cdash.org/viewBuildError.php?type=1&amp;amp;buildid=1076772.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076299&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076538&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54122</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54122"/>
		<updated>2017-08-10T20:03:38Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* &amp;lt;del&amp;gt;PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* &amp;lt;del&amp;gt;AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26217 r26217]&lt;br /&gt;
* &amp;lt;del&amp;gt;MultiVolumeExplorer: https://github.com/msmolens/MultiVolumeExplorer/tree/support-qt5&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** OpenIGTLinkIF (see https://github.com/openigtlink/OpenIGTLinkIF/pull/72)&lt;br /&gt;
**** MultiVolumeExplorer (see https://github.com/fedorov/MultiVolumeExplorer/pull/36)&lt;br /&gt;
**** &amp;lt;del&amp;gt;ParameterSerializer&amp;lt;/del&amp;gt; Updated in https://github.com/Slicer/ParameterSerializer/pull/7.&lt;br /&gt;
**** &amp;lt;del&amp;gt;EMSegment&amp;lt;/del&amp;gt; Updated in r17135.&lt;br /&gt;
**** SlicerExecutionModel&lt;br /&gt;
**** DataStore (see https://github.com/Slicer/Slicer-DataStore/pull/3).&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11. See https://github.com/SimpleITK/SimpleITK/issues/260.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** Fix and update VTK: QVTKOpenGLWidget can blit uninitialized framebuffers. On Mac, the bug is evident through visible artifacts when resizing the views. See https://gitlab.kitware.com/vtk/vtk/merge_requests/3138.&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** &amp;lt;del&amp;gt;Update MultiVolumeExplorer hash for Qt5 support.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix CTK warnings. See http://slicer.cdash.org/viewBuildError.php?type=1&amp;amp;buildid=1076772.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076299&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076538&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54116</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54116"/>
		<updated>2017-08-10T17:55:41Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* &amp;lt;del&amp;gt;PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* &amp;lt;del&amp;gt;AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26217 r26217]&lt;br /&gt;
* &amp;lt;del&amp;gt;MultiVolumeExplorer: https://github.com/msmolens/MultiVolumeExplorer/tree/support-qt5&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** OpenIGTLinkIF (see https://github.com/openigtlink/OpenIGTLinkIF/pull/72)&lt;br /&gt;
**** MultiVolumeExplorer (see https://github.com/fedorov/MultiVolumeExplorer/pull/35; commit needs to be merged into master branch)&lt;br /&gt;
**** &amp;lt;del&amp;gt;ParameterSerializer&amp;lt;/del&amp;gt; Updated in https://github.com/Slicer/ParameterSerializer/pull/7.&lt;br /&gt;
**** &amp;lt;del&amp;gt;EMSegment&amp;lt;/del&amp;gt; Updated in r17135.&lt;br /&gt;
**** SlicerExecutionModel&lt;br /&gt;
**** DataStore (see https://github.com/Slicer/Slicer-DataStore/pull/3).&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11. See https://github.com/SimpleITK/SimpleITK/issues/260.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** Fix and update VTK: QVTKOpenGLWidget can blit uninitialized framebuffers. On Mac, the bug is evident through visible artifacts when resizing the views. See https://gitlab.kitware.com/vtk/vtk/merge_requests/3138.&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** &amp;lt;del&amp;gt;Update MultiVolumeExplorer hash for Qt5 support.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix CTK warnings. See http://slicer.cdash.org/viewBuildError.php?type=1&amp;amp;buildid=1076772.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076299&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076538&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54113</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54113"/>
		<updated>2017-08-10T17:08:42Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* &amp;lt;del&amp;gt;PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* &amp;lt;del&amp;gt;AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26217 r26217]&lt;br /&gt;
* &amp;lt;del&amp;gt;MultiVolumeExplorer: https://github.com/msmolens/MultiVolumeExplorer/tree/support-qt5&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** OpenIGTLinkIF (see https://github.com/openigtlink/OpenIGTLinkIF/pull/72)&lt;br /&gt;
**** MultiVolumeExplorer (see https://github.com/fedorov/MultiVolumeExplorer/pull/35; commit needs to be merged into master branch)&lt;br /&gt;
**** &amp;lt;del&amp;gt;ParameterSerializer&amp;lt;/del&amp;gt; Updated in https://github.com/Slicer/ParameterSerializer/pull/7.&lt;br /&gt;
**** &amp;lt;del&amp;gt;EMSegment&amp;lt;/del&amp;gt; Updated in r17135.&lt;br /&gt;
**** DataStore (see https://github.com/Slicer/Slicer-DataStore/pull/3).&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11. See https://github.com/SimpleITK/SimpleITK/issues/260.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** Fix and update VTK: QVTKOpenGLWidget can blit uninitialized framebuffers. On Mac, the bug is evident through visible artifacts when resizing the views. See https://gitlab.kitware.com/vtk/vtk/merge_requests/3138.&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** &amp;lt;del&amp;gt;Update MultiVolumeExplorer hash for Qt5 support.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix CTK warnings. See http://slicer.cdash.org/viewBuildError.php?type=1&amp;amp;buildid=1076772.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076299&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076538&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54110</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54110"/>
		<updated>2017-08-10T17:08:19Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* &amp;lt;del&amp;gt;PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* &amp;lt;del&amp;gt;AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26217 r26217]&lt;br /&gt;
* &amp;lt;del&amp;gt;MultiVolumeExplorer: https://github.com/msmolens/MultiVolumeExplorer/tree/support-qt5&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** OpenIGTLinkIF (see https://github.com/openigtlink/OpenIGTLinkIF/pull/72)&lt;br /&gt;
**** MultiVolumeExplorer (see https://github.com/fedorov/MultiVolumeExplorer/pull/35; commit needs to be merged into master branch)&lt;br /&gt;
**** &amp;lt;del&amp;gt;ParameterSerializer&amp;lt;/del&amp;gt; Updated in https://github.com/Slicer/ParameterSerializer/pull/7.&lt;br /&gt;
**** &amp;lt;del&amp;gt;EMSegment&amp;lt;/del&amp;gt; Updated in r17135.&lt;br /&gt;
**** DataStore&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11. See https://github.com/SimpleITK/SimpleITK/issues/260.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** Fix and update VTK: QVTKOpenGLWidget can blit uninitialized framebuffers. On Mac, the bug is evident through visible artifacts when resizing the views. See https://gitlab.kitware.com/vtk/vtk/merge_requests/3138.&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** &amp;lt;del&amp;gt;Update MultiVolumeExplorer hash for Qt5 support.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix CTK warnings. See http://slicer.cdash.org/viewBuildError.php?type=1&amp;amp;buildid=1076772.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076299&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076538&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54107</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54107"/>
		<updated>2017-08-10T17:06:31Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* &amp;lt;del&amp;gt;PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* &amp;lt;del&amp;gt;AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26217 r26217]&lt;br /&gt;
* &amp;lt;del&amp;gt;MultiVolumeExplorer: https://github.com/msmolens/MultiVolumeExplorer/tree/support-qt5&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** OpenIGTLinkIF&lt;br /&gt;
**** MultiVolumeExplorer&lt;br /&gt;
**** ParameterSerializer &lt;br /&gt;
**** &amp;lt;del&amp;gt;EMSegment&amp;lt;/del&amp;gt; Updated in r17135.&lt;br /&gt;
**** DataStore&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11. See https://github.com/SimpleITK/SimpleITK/issues/260.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** Fix and update VTK: QVTKOpenGLWidget can blit uninitialized framebuffers. On Mac, the bug is evident through visible artifacts when resizing the views. See https://gitlab.kitware.com/vtk/vtk/merge_requests/3138.&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** &amp;lt;del&amp;gt;Update MultiVolumeExplorer hash for Qt5 support.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix CTK warnings. See http://slicer.cdash.org/viewBuildError.php?type=1&amp;amp;buildid=1076772.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076299&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076538&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54104</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54104"/>
		<updated>2017-08-10T17:05:57Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* &amp;lt;del&amp;gt;PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* &amp;lt;del&amp;gt;AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26217 r26217]&lt;br /&gt;
* &amp;lt;del&amp;gt;MultiVolumeExplorer: https://github.com/msmolens/MultiVolumeExplorer/tree/support-qt5&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** OpenIGTLinkIF&lt;br /&gt;
**** MultiVolumeExplorer&lt;br /&gt;
**** ParameterSerializer &lt;br /&gt;
**** &amp;lt;del&amp;gt;EMSegment&amp;lt;/del&amp;gt; Updated in r17135.&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11. See https://github.com/SimpleITK/SimpleITK/issues/260.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** Fix and update VTK: QVTKOpenGLWidget can blit uninitialized framebuffers. On Mac, the bug is evident through visible artifacts when resizing the views. See https://gitlab.kitware.com/vtk/vtk/merge_requests/3138.&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** &amp;lt;del&amp;gt;Update MultiVolumeExplorer hash for Qt5 support.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix CTK warnings. See http://slicer.cdash.org/viewBuildError.php?type=1&amp;amp;buildid=1076772.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076299&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076538&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54087</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54087"/>
		<updated>2017-08-09T14:49:32Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* &amp;lt;del&amp;gt;PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* &amp;lt;del&amp;gt;AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26217 r26217]&lt;br /&gt;
* &amp;lt;del&amp;gt;MultiVolumeExplorer: https://github.com/msmolens/MultiVolumeExplorer/tree/support-qt5&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** OpenIGTLinkIF&lt;br /&gt;
**** MultiVolumeExplorer&lt;br /&gt;
**** ParameterSerializer &lt;br /&gt;
**** &amp;lt;del&amp;gt;EMSegment&amp;lt;/del&amp;gt; Updated in r17135.&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11. See https://github.com/SimpleITK/SimpleITK/issues/260.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** Fix and update VTK: QVTKOpenGLWidget can blit uninitialized framebuffers. On Mac, the bug is evident through visible artifacts when resizing the views.&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** &amp;lt;del&amp;gt;Update MultiVolumeExplorer hash for Qt5 support.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix CTK warnings. See http://slicer.cdash.org/viewBuildError.php?type=1&amp;amp;buildid=1076772.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076299&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076538&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54084</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54084"/>
		<updated>2017-08-09T13:44:43Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* &amp;lt;del&amp;gt;PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* &amp;lt;del&amp;gt;AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26217 r26217]&lt;br /&gt;
* &amp;lt;del&amp;gt;MultiVolumeExplorer: https://github.com/msmolens/MultiVolumeExplorer/tree/support-qt5&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** OpenIGTLinkIF&lt;br /&gt;
**** MultiVolumeExplorer&lt;br /&gt;
**** ParameterSerializer &lt;br /&gt;
**** &amp;lt;del&amp;gt;EMSegment&amp;lt;/del&amp;gt; Updated in r17135.&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11. See https://github.com/SimpleITK/SimpleITK/issues/260.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** Fix and update VTK: QVTKOpenGLWidget can blit uninitialized framebuffers. On Mac, the bug is evident through visible artifacts when resizing the views.&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** &amp;lt;del&amp;gt;Update MultiVolumeExplorer hash for Qt5 support.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix CTK warnings. See http://slicer.cdash.org/viewBuildError.php?type=1&amp;amp;buildid=1076772.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076299&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076538&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54081</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54081"/>
		<updated>2017-08-09T13:04:15Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* &amp;lt;del&amp;gt;PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* &amp;lt;del&amp;gt;AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26217 r26217]&lt;br /&gt;
* &amp;lt;del&amp;gt;MultiVolumeExplorer: https://github.com/msmolens/MultiVolumeExplorer/tree/support-qt5&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** OpenIGTLinkIF&lt;br /&gt;
**** MultiVolumeExplorer&lt;br /&gt;
**** ParameterSerializer &lt;br /&gt;
**** &amp;lt;del&amp;gt;EMSegment&amp;lt;/del&amp;gt; Updated in r17135.&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11. See https://github.com/SimpleITK/SimpleITK/issues/260.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** Fix and update VTK: QVTKOpenGLWidget can blit uninitialized framebuffers. On Mac, the bug is evident through visible artifacts when resizing the views.&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** &amp;lt;del&amp;gt;Update MultiVolumeExplorer hash for Qt5 support.&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076299&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076538&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54078</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54078"/>
		<updated>2017-08-09T13:03:09Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* &amp;lt;del&amp;gt;PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* &amp;lt;del&amp;gt;AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26217 r26217]&lt;br /&gt;
* &amp;lt;del&amp;gt;MultiVolumeExplorer: https://github.com/msmolens/MultiVolumeExplorer/tree/support-qt5&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** OpenIGTLinkIF&lt;br /&gt;
**** MultiVolumeExplorer&lt;br /&gt;
**** ParameterSerializer &lt;br /&gt;
**** &amp;lt;del&amp;gt;EMSegment&amp;lt;/del&amp;gt; Updated in r17135.&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11. See https://github.com/SimpleITK/SimpleITK/issues/260.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** Fix and update VTK: QVTKOpenGLWidget can blit uninitialized framebuffers. On Mac, the bug evident through visible artifacts when resizing the views.&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** &amp;lt;del&amp;gt;Update MultiVolumeExplorer hash for Qt5 support.&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076299&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076538&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54075</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54075"/>
		<updated>2017-08-08T20:21:14Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* &amp;lt;del&amp;gt;PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* &amp;lt;del&amp;gt;AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26217 r26217]&lt;br /&gt;
* &amp;lt;del&amp;gt;MultiVolumeExplorer: https://github.com/msmolens/MultiVolumeExplorer/tree/support-qt5&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** OpenIGTLinkIF&lt;br /&gt;
**** MultiVolumeExplorer&lt;br /&gt;
**** ParameterSerializer &lt;br /&gt;
**** &amp;lt;del&amp;gt;EMSegment&amp;lt;/del&amp;gt; Updated in r17135.&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11. See https://github.com/SimpleITK/SimpleITK/issues/260.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** &amp;lt;del&amp;gt;Update MultiVolumeExplorer hash for Qt5 support.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Views show artifacts when resizing, at least on Mac.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076299&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076538&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54068</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54068"/>
		<updated>2017-08-08T18:08:38Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* &amp;lt;del&amp;gt;PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* &amp;lt;del&amp;gt;AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26217 r26217]&lt;br /&gt;
* &amp;lt;del&amp;gt;MultiVolumeExplorer: https://github.com/msmolens/MultiVolumeExplorer/tree/support-qt5&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** OpenIGTLinkIF&lt;br /&gt;
**** MultiVolumeExplorer&lt;br /&gt;
**** ParameterSerializer &lt;br /&gt;
**** &amp;lt;del&amp;gt;EMSegment&amp;lt;/del&amp;gt; Updated in r17135.&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11. See https://github.com/SimpleITK/SimpleITK/issues/260.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** &amp;lt;del&amp;gt;Update MultiVolumeExplorer hash for Qt5 support.&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076299&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076538&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54011</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54011"/>
		<updated>2017-08-08T13:53:52Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* &amp;lt;del&amp;gt;PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* &amp;lt;del&amp;gt;AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26217 r26217]&lt;br /&gt;
* &amp;lt;del&amp;gt;MultiVolumeExplorer: https://github.com/msmolens/MultiVolumeExplorer/tree/support-qt5&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** Also affects OpenIGTLinkIF, MultiVolumeExplorer, ParameterSerializer and EMSegment.&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11. See https://github.com/SimpleITK/SimpleITK/issues/260.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** &amp;lt;del&amp;gt;Update MultiVolumeExplorer hash for Qt5 support.&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076299&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076538&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54008</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54008"/>
		<updated>2017-08-08T13:45:26Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* &amp;lt;del&amp;gt;AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26217 r26217]&lt;br /&gt;
* &amp;lt;del&amp;gt;MultiVolumeExplorer: https://github.com/msmolens/MultiVolumeExplorer/tree/support-qt5&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** Also affects OpenIGTLinkIF, MultiVolumeExplorer, ParameterSerializer and EMSegment.&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11. See https://github.com/SimpleITK/SimpleITK/issues/260.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** &amp;lt;del&amp;gt;Update MultiVolumeExplorer hash for Qt5 support.&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076299&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076538&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54005</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54005"/>
		<updated>2017-08-08T13:44:49Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* &amp;lt;del&amp;gt;AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26217 r26217]&lt;br /&gt;
* &amp;lt;del&amp;gt;MultiVolumeExplorer: https://github.com/msmolens/MultiVolumeExplorer/tree/support-qt5&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** Also affects OpenIGTLinkIF, MultiVolumeExplorer, ParameterSerializer and EMSegment.&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11. See https://github.com/SimpleITK/SimpleITK/issues/260.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt; Fixed in CTK, but need to verify test in Slicer.&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** &amp;lt;del&amp;gt;Update MultiVolumeExplorer hash for Qt5 support.&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076299&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076538&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54002</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=54002"/>
		<updated>2017-08-08T12:46:15Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* &amp;lt;del&amp;gt;AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26217 r26217]&lt;br /&gt;
* &amp;lt;del&amp;gt;MultiVolumeExplorer: https://github.com/msmolens/MultiVolumeExplorer/tree/support-qt5&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** Also affects OpenIGTLinkIF, MultiVolumeExplorer, ParameterSerializer and EMSegment.&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt; Fixed in CTK, but need to verify test in Slicer.&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** &amp;lt;del&amp;gt;Update MultiVolumeExplorer hash for Qt5 support.&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076299&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076538&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53999</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53999"/>
		<updated>2017-08-08T12:45:36Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* &amp;lt;del&amp;gt;AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26217 r26217]&lt;br /&gt;
* &amp;lt;del&amp;gt;MultiVolumeExplorer: https://github.com/msmolens/MultiVolumeExplorer/tree/support-qt5&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** Also affects OpenIGTLinkIF, MultiVolumeExplorer, ParameterSerializer and EMSegment.&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt; Fixed in CTK, but need to verify test in Slicer.&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** Update MultiVolumeExplorer hash for Qt5 support.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076299&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076538&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53996</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53996"/>
		<updated>2017-08-08T12:40:03Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* &amp;lt;del&amp;gt;AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26217 r26217]&lt;br /&gt;
* &amp;lt;del&amp;gt;MultiVolumeExplorer: https://github.com/msmolens/MultiVolumeExplorer/tree/support-qt5&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** Also affects OpenIGTLinkIF, MultiVolumeExplorer, ParameterSerializer and EMSegment.&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt; Fixed in CTK, but need to verify test in Slicer.&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** Update MultiVolumeExplorer hash for Qt5 support.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-08-07: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1076299&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074509&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53984</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53984"/>
		<updated>2017-08-07T19:50:44Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&lt;br /&gt;
* &amp;lt;del&amp;gt;MultiVolumeExplorer: https://github.com/msmolens/MultiVolumeExplorer/tree/support-qt5&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** Also affects OpenIGTLinkIF, MultiVolumeExplorer, ParameterSerializer and EMSegment.&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt; Fixed in CTK, but need to verify test in Slicer.&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** Update MultiVolumeExplorer hash for Qt5 support.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074509&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53972</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53972"/>
		<updated>2017-08-07T13:58:13Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&lt;br /&gt;
* MultiVolumeExplorer: https://github.com/msmolens/MultiVolumeExplorer/tree/support-qt5&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** Also affects OpenIGTLinkIF, MultiVolumeExplorer, ParameterSerializer and EMSegment.&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt; Fixed in CTK, but need to verify test in Slicer.&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** Update MultiVolumeExplorer hash for Qt5 support.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074509&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53969</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53969"/>
		<updated>2017-08-07T13:57:34Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** Also affects OpenIGTLinkIF, MultiVolumeExplorer, ParameterSerializer and EMSegment.&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&amp;lt;/del&amp;gt; Merged in https://gitlab.kitware.com/vtk/vtk/merge_requests/3103.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt; Fixed in CTK, but need to verify test in Slicer.&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** Update MultiVolumeExplorer hash for Qt5 support.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074509&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53966</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53966"/>
		<updated>2017-08-07T13:56:58Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-07-88c80af&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** Also affects OpenIGTLinkIF, MultiVolumeExplorer, ParameterSerializer and EMSegment.&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&lt;br /&gt;
*** See https://gitlab.kitware.com/vtk/vtk/merge_requests/3103&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt; Fixed in CTK, but need to verify test in Slicer.&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** Update MultiVolumeExplorer hash for Qt5 support.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074509&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53963</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53963"/>
		<updated>2017-08-07T13:56:28Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-07 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-08-05-r26208 (includes VTK8)&lt;br /&gt;
** old branches:&lt;br /&gt;
*** https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-01-f4fc45c&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** Also affects OpenIGTLinkIF, MultiVolumeExplorer, ParameterSerializer and EMSegment.&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&lt;br /&gt;
*** See https://gitlab.kitware.com/vtk/vtk/merge_requests/3103&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt; Fixed in CTK, but need to verify test in Slicer.&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** Update MultiVolumeExplorer hash for Qt5 support.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074509&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53950</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53950"/>
		<updated>2017-08-07T13:35:43Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-01 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186 (includes VTK8)&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-01-f4fc45c&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** Also affects OpenIGTLinkIF, MultiVolumeExplorer, ParameterSerializer and EMSegment.&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&lt;br /&gt;
*** See https://gitlab.kitware.com/vtk/vtk/merge_requests/3103&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt; Fixed in CTK, but need to verify test in Slicer.&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
** Update MultiVolumeExplorer hash for Qt5 support.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074509&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53947</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53947"/>
		<updated>2017-08-07T12:40:38Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-01 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186 (includes VTK8)&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-01-f4fc45c&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** Also affects OpenIGTLinkIF, MultiVolumeExplorer, ParameterSerializer and EMSegment.&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
*** SimpleITK doesn't recognize standard CMake way to enable C++11.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&lt;br /&gt;
*** See https://gitlab.kitware.com/vtk/vtk/merge_requests/3103&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt; Fixed in CTK, but need to verify test in Slicer.&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074509&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53930</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53930"/>
		<updated>2017-08-04T20:47:15Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-01 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186 (includes VTK8)&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-01-f4fc45c&lt;br /&gt;
* &amp;lt;del&amp;gt;DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] (Branch was also renamed - see https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714)&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* &amp;lt;del&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/del&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** Also affects OpenIGTLinkIF, MultiVolumeExplorer, ParameterSerializer and EMSegment.&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&amp;lt;/del&amp;gt; - See  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26204 r26204] and [https://github.com/commontk/DCMTK/tree/patched-DCMTK-3.6.2_20170714 commontk/DCMTK@patched-DCMTK-3.6.2_20170714] - DCMTK team was notified - See [https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16#commitcomment-23474059 here])&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&lt;br /&gt;
*** See https://gitlab.kitware.com/vtk/vtk/merge_requests/3103&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt; Fixed in CTK, but need to verify test in Slicer.&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with VS2015.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074509&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53917</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53917"/>
		<updated>2017-08-04T19:15:48Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-01 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186 (includes VTK8)&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-01-f4fc45c&lt;br /&gt;
* DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* &amp;lt;s&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/s&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** Also affects OpenIGTLinkIF, MultiVolumeExplorer, ParameterSerializer and EMSegment.&lt;br /&gt;
*** DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&lt;br /&gt;
*** See https://gitlab.kitware.com/vtk/vtk/merge_requests/3103&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt; Fixed in CTK, but need to verify test in Slicer.&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix Qt deprecation warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074509&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53914</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53914"/>
		<updated>2017-08-04T19:15:10Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-01 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186 (includes VTK8)&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-01-f4fc45c&lt;br /&gt;
* DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* &amp;lt;s&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/s&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&amp;lt;/del&amp;gt;&lt;br /&gt;
**** Also affects OpenIGTLinkIF, MultiVolumeExplorer, ParameterSerializer and EMSegment.&lt;br /&gt;
*** DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&lt;br /&gt;
*** See https://gitlab.kitware.com/vtk/vtk/merge_requests/3103&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt; Fixed in CTK, but need to verify test in Slicer.&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Qt deprecation warnings.&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074509&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53911</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53911"/>
		<updated>2017-08-04T18:43:04Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-01 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186 (includes VTK8)&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-01-f4fc45c&lt;br /&gt;
* DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* &amp;lt;s&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/s&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&lt;br /&gt;
*** DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&lt;br /&gt;
*** See https://gitlab.kitware.com/vtk/vtk/merge_requests/3103&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&amp;lt;/del&amp;gt; Fixed in CTK, but need to verify test in Slicer.&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Qt deprecation warnings.&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074509&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53908</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53908"/>
		<updated>2017-08-04T15:53:30Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-01 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186 (includes VTK8)&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-01-f4fc45c&lt;br /&gt;
* DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* &amp;lt;s&amp;gt;qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&amp;lt;/s&amp;gt; - Integrated in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=26198 r26198]&lt;br /&gt;
* AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&lt;br /&gt;
*** DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&lt;br /&gt;
*** See https://gitlab.kitware.com/vtk/vtk/merge_requests/3103&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Qt deprecation warnings.&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074509&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53873</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53873"/>
		<updated>2017-08-03T12:49:58Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Migration Guide */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-01 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186 (includes VTK8)&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-01-f4fc45c&lt;br /&gt;
* DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&lt;br /&gt;
* AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&lt;br /&gt;
*** DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Qt deprecation warnings.&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074509&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
Also see https://www.slicer.org/wiki/Documentation/Labs/VTK8#Migration_guide.&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53870</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53870"/>
		<updated>2017-08-03T12:44:51Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-01 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186 (includes VTK8)&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-01-f4fc45c&lt;br /&gt;
* DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&lt;br /&gt;
* AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&lt;br /&gt;
*** DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Qt deprecation warnings.&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074507&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074509&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53867</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53867"/>
		<updated>2017-08-03T12:44:08Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-01 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186 (includes VTK8)&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-01-f4fc45c&lt;br /&gt;
* DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&lt;br /&gt;
* AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&lt;br /&gt;
*** DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Qt deprecation warnings.&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-01: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1073825&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 downloaded from Qt's official releases, MacOSX10.11&lt;br /&gt;
*** 2017-08-02: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1074509&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53864</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53864"/>
		<updated>2017-08-02T21:35:51Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-01 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186 (includes VTK8)&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-01-f4fc45c&lt;br /&gt;
* DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&lt;br /&gt;
* AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&lt;br /&gt;
*** DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Qt deprecation warnings.&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch build with VTK7+OpenGL backend.&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with VTK7+OpenGL2 backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Test branch build with Qt4.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-01: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1073825&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 built from scratch with openssl support, MacOSX10.11&lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1064397&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53861</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53861"/>
		<updated>2017-08-02T20:30:18Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-01 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186 (includes VTK8)&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-01-f4fc45c&lt;br /&gt;
* DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&lt;br /&gt;
* AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&lt;br /&gt;
*** DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Qt deprecation warnings.&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch with VTK7 (OpenGL and OpenGL2 backends).&lt;br /&gt;
** Test branch with Qt4.&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
*** VS2015 (warning: out-of-date):&lt;br /&gt;
**** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
**** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
***** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
***** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-01: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1073825&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 built from scratch with openssl support, MacOSX10.11&lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1064397&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53856</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53856"/>
		<updated>2017-08-02T20:17:42Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-01 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186 (includes VTK8)&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-01-f4fc45c&lt;br /&gt;
* DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&lt;br /&gt;
* AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Extensions&amp;lt;/del&amp;gt;&lt;br /&gt;
*** Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&lt;br /&gt;
*** DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Qt deprecation warnings.&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch with VTK7 (OpenGL and OpenGL2 backends).&lt;br /&gt;
** Test branch with Qt4.&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
**** VS2015:&lt;br /&gt;
***** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
***** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
****** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
****** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
****** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-01: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1073825&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 built from scratch with openssl support, MacOSX10.11&lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1064397&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/VTK8&amp;diff=53853</id>
		<title>Documentation/Labs/VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/VTK8&amp;diff=53853"/>
		<updated>2017-08-02T20:16:36Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Migration guide */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use VTK 8.0.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
It is planned to update the version of VTK that Slicer uses from 7.1 to 8.0.&lt;br /&gt;
&lt;br /&gt;
WARNING: Status on this page is out-of-date. Since VTK8 transition will happen in conjunction with Qt5, see detailed TODO lists on [[Documentation/Labs/Qt5]].&lt;br /&gt;
&lt;br /&gt;
==Status==&lt;br /&gt;
&lt;br /&gt;
* Builds on Linux and Windows.&lt;br /&gt;
* Fails to build on Mac due to linker error in VTK introduced in https://gitlab.kitware.com/vtk/vtk/merge_requests/1713. Potential fix is in progress: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014.&lt;br /&gt;
* Windows shows OpenGL errors at exit with the OpenGL backend. Likely a regression from https://github.com/Kitware/VTK/commit/49802a3d15fac9dd64feb6e86fb8d0dfc2d31a05.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   Generic Warning: In C:\path\to\S\VTKv7\Rendering\OpenGL\vtkOpenGLDisplayListPainter.cxx, line 52&lt;br /&gt;
   failed after ReleaseAllLists 16 OpenGL errors detected&lt;br /&gt;
   0 : (1282) Invalid operation&lt;br /&gt;
   1 : (1282) Invalid operation&lt;br /&gt;
   ...&lt;br /&gt;
   15 : (1282) Invalid operation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* VTK8 requires C++11. Because Slicer includes custom VTK classes, Slicer should also be compiled with C++11.&lt;br /&gt;
* &amp;lt;del&amp;gt;On Mac, if targeting 10.7 or 10.8, likely will need to set CMAKE_CXX_FLAGS=-stdlib=libc++ for C++11 support. Note that this would require Qt build with libc++, which is officially supported by Qt5. Note: Qt 5.7.1 minimum officially supported deployment target is 10.8.&amp;lt;/del&amp;gt; Resolution: target 10.9.&lt;br /&gt;
* There may be picking issues with widgets. For example, the slice view ROI handles don't work correctly.&lt;br /&gt;
* &amp;lt;del&amp;gt;* Windows (VS2013) may have a dependency issue related to Python wrapping. At first, wrapping seems to not use the hierarchy files or runs before they are available. Building again generates the wrapped classes correctly.&amp;lt;/del&amp;gt; (resolved)&lt;br /&gt;
* &amp;lt;del&amp;gt;Update &amp;quot;VTKv7&amp;quot; project name to &amp;quot;VTKv8&amp;quot;.&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;Add &amp;lt;tt&amp;gt;Slicer_VTK_VERSION_MAJOR&amp;lt;/tt&amp;gt; option to support building with VTK7 and VTK8, as was done for VTK5/6 in https://github.com/Slicer/Slicer/commit/50281153c57c683106498295ea82472eaa20eee4. VTK7 wrapping should not build the hierarchy files.&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;EMSegment remote module will require updates to fix vtkDebugLeaks output.&amp;lt;/del&amp;gt; (updated in r17131)&lt;br /&gt;
&lt;br /&gt;
===Branches/Merge Requests===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;VTK:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://github.com/Slicer/VTK/commits/slicer-v8.0.0-2017-06-26-782d7ed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Slicer:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://github.com/msmolens/Slicer/commits/support-vtk8&lt;br /&gt;
&lt;br /&gt;
====Outstanding VTK issues====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;del&amp;gt;Respect access specifier of using statements in wrapping: https://gitlab.kitware.com/vtk/vtk/merge_requests/2988&amp;lt;/del&amp;gt; {{done}}&lt;br /&gt;
* OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow: https://gitlab.kitware.com/vtk/vtk/issues/17076&lt;br /&gt;
** Would be great to get a proper fix from the VTK team for this regression.&lt;br /&gt;
* Can't build VTK on Mac with &amp;lt;tt&amp;gt;-DVTK_WRAP_PYTHON:BOOL=ON -DVTK_ENABLE_KITS:BOOL=ON&amp;lt;/tt&amp;gt; because libvtkWrapping-8.1.1.dylib doesn't link.&lt;br /&gt;
* Update Slicer/VTK branch to include upstreamed fixes&lt;br /&gt;
&lt;br /&gt;
====Slicer-specific VTK commits====&lt;br /&gt;
&lt;br /&gt;
Slicer's VTK 8.0 branch includes fixes/changes that aren't in upstream:&lt;br /&gt;
* Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&lt;br /&gt;
** https://github.com/Slicer/VTK/commit/cbb1269509cb32d3827adfce1795e51209132e73&lt;br /&gt;
* &amp;lt;del&amp;gt;Respect access specifier of using statements in wrapping&amp;lt;/del&amp;gt; (Merged upstream)&lt;br /&gt;
** &amp;lt;del&amp;gt;https://github.com/Slicer/VTK/commit/93a7c677481259cf23121a053d82ba4b7c2286e6&amp;lt;/del&amp;gt;&lt;br /&gt;
* ENH: Allow selection of seed points using vtkSeedWidget&lt;br /&gt;
** https://github.com/Slicer/VTK/commit/734709ee38a0a25c92a9a0c7477cfddec5e12cf3&lt;br /&gt;
* Ensure vtkVariant stream associated with &amp;lt;&amp;lt; operator is set back to &amp;quot;dec&amp;quot;.&lt;br /&gt;
** https://github.com/Slicer/VTK/commit/dbf5de60c0809ca6233fe428761ef19e561ef542&lt;br /&gt;
* BUG: WIP: fix vtkPickingManager interaction with widgets&lt;br /&gt;
** https://github.com/Slicer/VTK/commit/2c55e994475b6568a5b3e7363ab70c4dd722cc5d&lt;br /&gt;
&lt;br /&gt;
===Test results===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Windows:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test results:&lt;br /&gt;
* http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1058006 (Release configuration, OpenGL backend)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Linux:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test results:&lt;br /&gt;
* http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1053469 (Release configuration, OpenGL backend, Ubuntu 16.04)&lt;br /&gt;
** py_StandaloneEditorWidgetTest is vtkDebugLeaks; also occurs when built with VTK7.&lt;br /&gt;
* http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1053471 (Release configuration, OpenGL2 backend, Ubuntu 16.04)&lt;br /&gt;
&amp;lt;b&amp;gt;OS X:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test results:&lt;br /&gt;
* TBD&lt;br /&gt;
&lt;br /&gt;
===Rendering backend===&lt;br /&gt;
&lt;br /&gt;
Although VTK 7 changed the default setting of &amp;lt;tt&amp;gt;VTK_RENDERING_BACKEND&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;OpenGL2&amp;lt;/tt&amp;gt;, Slicer still explicitly sets it to &amp;lt;tt&amp;gt;OpenGL&amp;lt;/tt&amp;gt;. The rendering backend in Slicer is set using &amp;lt;tt&amp;gt;Slicer_VTK_RENDERING_BACKEND&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====OpenGL2 backend known issues====&lt;br /&gt;
&lt;br /&gt;
* Need to move OS X nightly build to new factory machine to be able to set &amp;lt;tt&amp;gt;CMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.7&amp;lt;/tt&amp;gt;. This will ensure that the required OpenGL version is found. See https://github.com/Slicer/Slicer/pull/595.&lt;br /&gt;
** WIP PR: https://github.com/Slicer/DashboardScripts/pull/12. Will need to be updated for Qt5.&lt;br /&gt;
* [http://www.na-mic.org/Bug/view.php?id=4252 4252: Slicer crashes on start when started through Windows Remote Desktop]&lt;br /&gt;
&lt;br /&gt;
===Discussion===&lt;br /&gt;
&lt;br /&gt;
The transition plan was announced on the Slicer forum: https://discourse.slicer.org/t/transition-to-vtk-8-0/379.&lt;br /&gt;
&lt;br /&gt;
==Migration guide==&lt;br /&gt;
&lt;br /&gt;
This section lists categories of code changes necessary to build and run Slicer with VTK 8.0. Each category has a short description, a suggested upgrade path, and references to relevant commits (TBD once merged).&lt;br /&gt;
&lt;br /&gt;
===Use hierarchy files for VTK Python wrapping===&lt;br /&gt;
&lt;br /&gt;
In VTK8 it's necessary to generate hierarchy files for proper wrapping VTK classes in Python. Without the information provided by the hierarchy files, the Python wrapping tool lacks complete information about classes and types. In this case, the generated classes contain methods that shouldn't be wrapped and fail to compile, and include references to types such as &amp;lt;tt&amp;gt;vtkTypeBool&amp;lt;/tt&amp;gt;. Once the hierarchy files are generated and provided to the Python wrapping tool, the generated classes compile and typedefs like &amp;lt;tt&amp;gt;vtkTypeBool&amp;lt;/tt&amp;gt; are correctly resolved.&lt;br /&gt;
&lt;br /&gt;
Once the VTK8 changes are merged, generating hierarchy files is handled by https://github.com/Slicer/Slicer/blob/master/CMake/vtkMacroKitPythonWrap.cmake.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;References:&amp;lt;/b&amp;gt;&lt;br /&gt;
* http://www.vtk.org/Wiki/VTK/WrapHierarchy&lt;br /&gt;
&lt;br /&gt;
===Call InitializeObjectBase() in vtkObject New() methods===&lt;br /&gt;
&lt;br /&gt;
In VTK8 it's necessary for &amp;lt;tt&amp;gt;vtkObject&amp;lt;/tt&amp;gt; &amp;lt;tt&amp;gt;New()&amp;lt;/tt&amp;gt; methods to call &amp;lt;tt&amp;gt;InitializeObjectBase()&amp;lt;/tt&amp;gt; on the new object for proper tracking with &amp;lt;tt&amp;gt;vtkDebugLeaks&amp;lt;/tt&amp;gt;. The standard macros (&amp;lt;tt&amp;gt;vtkStandardNewMacro&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;vtkObjectFactoryNewMacro&amp;lt;/tt&amp;gt;) handle this. For those classes that don't use the macros, add a call to &amp;lt;tt&amp;gt;InitializeObjectBase()&amp;lt;/tt&amp;gt; immediately after constructing the object by &amp;lt;tt&amp;gt;new vtkXXX()&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, &amp;lt;tt&amp;gt;vtkObjectFactory::CreateInstance()&amp;lt;/tt&amp;gt; now doesn't register the class name with vtkDebugLeaks if the factory fails to create the object. Therefore, it's no longer necessary to unregister the class name with vtkDebugLeaks. Remove calls to &amp;lt;tt&amp;gt;vtkDebugLeaks::DestructClass(className)&amp;lt;/tt&amp;gt; following &amp;lt;tt&amp;gt;vtkObjectFactory::CreateInstance()&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To support both VTK8 and earlier versions of VTK, wrap these changes in preprocessor checks for whether &amp;lt;tt&amp;gt;VTK_HAS_INITIALIZE_OBJECT_BASE&amp;lt;/tt&amp;gt; is defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;References:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://github.com/Kitware/VTK/commit/e5c793dbdf87e838bb2b60c6a5905ced0e5548f9&lt;br /&gt;
* http://public.kitware.com/pipermail/vtk-developers/2016-September/034332.html&lt;br /&gt;
&lt;br /&gt;
===Add C++11 keywords===&lt;br /&gt;
&lt;br /&gt;
VTK8 requires C++11. Subclasses of VTK classes must mark overridden methods with &amp;lt;tt&amp;gt;VTK_OVERRIDE&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Qt5: QVTKOpenGLWidget===&lt;br /&gt;
&lt;br /&gt;
When using Qt5, [https://github.com/Kitware/VTK/blob/9393774ff9b3d735a40eb445ff6c045e55c90eae/GUISupport/Qt/QVTKOpenGLWidget.h QVTKOpenGLWidget] should be used in place of QVTKGLWidget. To ensure that QVTKOpenGLWidget receives a properly configured OpenGL context it's necessary to call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance. QVTKOpenGLWidget::defaultFormat() supplies a suitable format, although it's recommended to disable multisampling for full compatibility with advanced rendering techniques. See http://doc.qt.io/qt-5/qopenglwidget.html.&lt;br /&gt;
&lt;br /&gt;
===vtkWindowToImageFilter::SetMagnification() is deprecated===&lt;br /&gt;
&lt;br /&gt;
VTK8.1 deprecated vtkWindowToImageFilter::SetMagnification() and vtkWindowToImageFilter::GetMagnification(). Replace calls to those methods with SetScale() and GetScale(). See https://github.com/Kitware/VTK/commit/af0a95fa7dd4e25ef869a0bc6077e547f18baa29.&lt;br /&gt;
&lt;br /&gt;
===Enable C++11 in extensions===&lt;br /&gt;
&lt;br /&gt;
SuperBuild extensions may have to enable C++11 for their external projects. Add the following lines to &amp;lt;tt&amp;gt;CMAKE_CACHE_ARGS&amp;lt;/tt&amp;gt; in &amp;lt;tt&amp;gt;ExternalProject_Add&amp;lt;/tt&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    -DCMAKE_CXX_STANDARD:STRING=${CMAKE_CXX_STANDARD}&lt;br /&gt;
    -DCMAKE_CXX_STANDARD_REQUIRED:BOOL=${CMAKE_CXX_STANDARD_REQUIRED}&lt;br /&gt;
    -DCMAKE_CXX_EXTENSIONS:BOOL=${CMAKE_CXX_EXTENSIONS}&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
Future work in Slicer related to VTK 8 could include:&lt;br /&gt;
* Remove BTX/ETX markers.&lt;br /&gt;
* Check for and resolve build warnings in Slicer VTK classes.&lt;br /&gt;
* Check that settings in &amp;lt;tt&amp;gt;External_VTKv8.cmake&amp;lt;/tt&amp;gt; are all still necessary, specifically &amp;lt;tt&amp;gt;VTK_USE_PARALLEL&amp;lt;/tt&amp;gt;, and anything related to Qt.&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53837</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53837"/>
		<updated>2017-08-02T17:59:07Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-01 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186 (includes VTK8)&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-01-f4fc45c&lt;br /&gt;
* DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&lt;br /&gt;
* AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** Extensions&lt;br /&gt;
*** Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&lt;br /&gt;
*** DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Qt deprecation warnings.&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch with VTK7 (OpenGL and OpenGL2 backends).&lt;br /&gt;
** Test branch with Qt4.&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** &amp;lt;del&amp;gt;Support VS2015 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
**** VS2015:&lt;br /&gt;
***** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
***** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
****** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
****** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
****** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-01: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1073825&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 built from scratch with openssl support, MacOSX10.11&lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1064397&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53832</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53832"/>
		<updated>2017-08-02T16:28:33Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-01 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186 (includes VTK8)&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-01-f4fc45c&lt;br /&gt;
* DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&lt;br /&gt;
* AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** Extensions&lt;br /&gt;
*** Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&lt;br /&gt;
*** DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** qMRMLColorPickerWidgetTest2 on Mac crashes due to changes in QColorDialog in Qt5. CTK should no longer assume the non-native dialog is constructed, i.e. the layouts exist, when ctkColorDialog is instantiated.&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Qt deprecation warnings.&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch with VTK7 (OpenGL and OpenGL2 backends).&lt;br /&gt;
** Test branch with Qt4.&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** Support VS2015/VS2017 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
**** VS2015:&lt;br /&gt;
***** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
***** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
****** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
****** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
****** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-01: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1073825&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 built from scratch with openssl support, MacOSX10.11&lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1064397&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53822</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53822"/>
		<updated>2017-08-02T15:44:29Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-01 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186 (includes VTK8)&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-01-f4fc45c&lt;br /&gt;
* DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&lt;br /&gt;
* AppLauncher: https://github.com/msmolens/AppLauncher/tree/support-qt5&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** Extensions&lt;br /&gt;
*** Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&lt;br /&gt;
*** DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** qMRMLColorPickerWidgetTest2 (CTK/Qt5 issue?).&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Qt deprecation warnings.&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch with VTK7 (OpenGL and OpenGL2 backends).&lt;br /&gt;
** Test branch with Qt4.&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** Support VS2015/VS2017 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
**** VS2015:&lt;br /&gt;
***** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
***** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
****** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
****** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
****** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-01: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1073825&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 built from scratch with openssl support, MacOSX10.11&lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1064397&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53809</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53809"/>
		<updated>2017-08-02T14:04:07Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-01 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186 (includes VTK8)&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-01-f4fc45c&lt;br /&gt;
* DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** Extensions&lt;br /&gt;
*** Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&lt;br /&gt;
*** DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** qMRMLColorPickerWidgetTest2 (CTK/Qt5 issue?).&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Qt deprecation warnings.&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch with VTK7 (OpenGL and OpenGL2 backends).&lt;br /&gt;
** Test branch with Qt4.&lt;br /&gt;
** Test with Qt5.9.1.&lt;br /&gt;
** Support VS2015/VS2017 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
**** VS2015:&lt;br /&gt;
***** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
***** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
****** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
****** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
****** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-01: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1073825&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 built from scratch with openssl support, MacOSX10.11&lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1064397&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53806</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53806"/>
		<updated>2017-08-02T12:58:51Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-01 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186 (includes VTK8)&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-01-f4fc45c&lt;br /&gt;
* DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** Extensions&lt;br /&gt;
*** Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&lt;br /&gt;
*** DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** qMRMLColorPickerWidgetTest2 (CTK/Qt5 issue?).&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Qt deprecation warnings.&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch with VTK7 (OpenGL and OpenGL2 backends).&lt;br /&gt;
** Test branch with Qt4.&lt;br /&gt;
** Test with Qt5.9.&lt;br /&gt;
** Support VS2015/VS2017 by updating to latest python-cmake-buildsystem. Prerequisite: make pre-compiled OpenSSL available for VS2015/VS2017.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
**** VS2015:&lt;br /&gt;
***** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
***** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
****** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
****** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
****** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-01: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1073825&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 built from scratch with openssl support, MacOSX10.11&lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1064397&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53803</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53803"/>
		<updated>2017-08-02T12:58:13Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-01 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186 (includes VTK8)&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-01-f4fc45c&lt;br /&gt;
* DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** Extensions&lt;br /&gt;
*** Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&lt;br /&gt;
*** DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** qMRMLColorPickerWidgetTest2 (CTK/Qt5 issue?).&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Qt deprecation warnings.&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch with VTK7 (OpenGL and OpenGL2 backends).&lt;br /&gt;
** Test branch with Qt4.&lt;br /&gt;
** Test with Qt5.9.&lt;br /&gt;
** Make pre-compiled OpenSSL available for VS2015/VS2017.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
**** VS2015:&lt;br /&gt;
***** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
***** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
****** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
****** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
****** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-01: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1073825&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 built from scratch with openssl support, MacOSX10.11&lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1064397&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53800</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53800"/>
		<updated>2017-08-01T19:33:52Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* All platforms */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-01 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186 (includes VTK8)&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-01-f4fc45c&lt;br /&gt;
* DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** Extensions&lt;br /&gt;
*** Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&lt;br /&gt;
*** DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** qMRMLColorPickerWidgetTest2 (CTK/Qt5 issue?).&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Qt deprecation warnings.&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch with VTK7 (OpenGL and OpenGL2 backends).&lt;br /&gt;
** Test branch with Qt4.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
**** VS2015:&lt;br /&gt;
***** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
***** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
****** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
****** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
****** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-01: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1073825&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 built from scratch with openssl support, MacOSX10.11&lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1064397&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53797</id>
		<title>Documentation/Labs/Qt5-and-VTK8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Qt5-and-VTK8&amp;diff=53797"/>
		<updated>2017-08-01T19:32:01Z</updated>

		<summary type="html">&lt;p&gt;Max.smolens: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the update of Slicer to use Qt 5.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Because Qt4 is not actively developed (as documented [http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year/ 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.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
As of 2017-08-01 the relevant branches for testing are:&lt;br /&gt;
* Slicer: https://github.com/msmolens/Slicer/tree/support-qt5-2017-07-29-r26186 (includes VTK8)&lt;br /&gt;
* CTK: https://github.com/msmolens/CTK/tree/wip-support-qvtkopenglwidget&lt;br /&gt;
* VTK: https://github.com/Slicer/VTK/tree/slicer-v8.0.0-2017-08-01-f4fc45c&lt;br /&gt;
* DCMTK: https://github.com/msmolens/DCMTK/tree/patched-DCMTK-3.6.2_20170801&lt;br /&gt;
* PythonQt: https://github.com/msmolens/PythonQt/tree/msvc-bigobj&lt;br /&gt;
* qRestAPI: https://github.com/msmolens/qRestAPI/tree/support-qt-no-ssl-macro&lt;br /&gt;
&lt;br /&gt;
To configure Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DSlicer_REQUIRED_QT_VERSION:STRING=5.7.1 -DQt5_DIR:PATH=/home/jcfr/Software/Qt5.9.1/5.9.1/gcc_64/lib/cmake/Qt5 ...  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For VS2015 gotchas, see below.&lt;br /&gt;
&lt;br /&gt;
* Qt5/VTK8 integration TODO:&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Properly initialize QVTKOpenGLWidget for tests. Call QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance so that an OpenGL core profile context is requested. (Slicer, CTK)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Enable C++11 for Slicer, extensions, and libraries as appropriate.&lt;br /&gt;
*** &amp;lt;del&amp;gt;BRAINSTools ignores configuration options and fails to configure when C++11 is enabled.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;DCMTK has a compile error when C++11 is enabled?&amp;lt;/del&amp;gt;. (Resolved: requires custom definition to enable C++11.)&lt;br /&gt;
*** &amp;lt;del&amp;gt;Slicer&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Libraries that use C++&amp;lt;/del&amp;gt;&lt;br /&gt;
*** Extensions&lt;br /&gt;
*** Add VTK_OVERRIDE, VTK_FINAL, VTK_DELETE_FUNCTION and other necessary keywords to fix build warnings. Maintain compatibility with VTK7 by defining these as empty when using VTK7.&lt;br /&gt;
*** DCMTK 3.6.2 has a configuration error when C++11 is enabled on Linux. See https://github.com/msmolens/DCMTK/commit/c9ccd45212cb542d78201995951fbcfb416f8b16 for a workaround.&lt;br /&gt;
** &amp;lt;del&amp;gt;Set OpenGL2 as default rendering backend.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK and Slicer QtTesting tests refer to QVTKWidget. Can they be converted to recognize QVTKOpenGLWidget?&amp;lt;/del&amp;gt;&lt;br /&gt;
** Merge and update CTK: https://github.com/commontk/PythonQt/pull/57 (&amp;quot;Fix compile error on MSVC with Qt 5.7.1&amp;quot;)&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3014 (&amp;quot;Fix linking libvtkWrapping with Python wrapping and kits enabled on Mac&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Merge and update VTK: https://gitlab.kitware.com/vtk/vtk/merge_requests/3041 (&amp;quot;QVTKOpenGLWidget: Set screen size on render window&amp;quot;)&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17091 (&amp;quot;QVTKOpenGLWidget: Picking vtkActor2D fails&amp;quot;). In Slicer one operation this issue affects is picking slice view ROI box handles.&lt;br /&gt;
** Fix and update VTK: https://gitlab.kitware.com/vtk/vtk/issues/17076 (&amp;quot;OpenGL errors occur when destroying vtkWin32OpenGLRenderWindow&amp;quot;) (Only affects old OpenGL backend.)&lt;br /&gt;
** &amp;lt;del&amp;gt;Clicking on module search result in popup does not open the module. ComboBox does not always show the selected item.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Slicer test failures:&lt;br /&gt;
*** Floating point exceptions (&amp;quot;SIGFPE with code FPE_FLTUND&amp;quot;) on Mac (ModelToLabelMapTest, ModelToLabelMapTestLabelValue, N4ITKBiasFieldCorrectionTest).&lt;br /&gt;
*** py_LandmarkRegistration crash on exit.&lt;br /&gt;
*** qMRMLLayoutManagerWithCustomFactoryTest (&amp;quot;vtkPlaneSource: Bad plane coordinate system&amp;quot;).&lt;br /&gt;
*** ResampleDTIVolumeBSplineInterpolationTest (image diff?).&lt;br /&gt;
*** py_VolumeRenderingThreeDOnlyLayout on Windows (&amp;quot;Shader object was not initialized, cannot attach it.&amp;quot;). This is a similar issue as was fixed in [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25239 r25239], but resurrected due to the behavior of QVTKOpenGLWidget. The old fix is insufficient.&lt;br /&gt;
*** qMRMLColorPickerWidgetTest2 (CTK/Qt5 issue?).&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix CTK Qt5 test failures.&amp;lt;/del&amp;gt;&lt;br /&gt;
** OpenSSL/DataStore/qRestAPI issues?&lt;br /&gt;
** Packaging?&lt;br /&gt;
** &amp;lt;del&amp;gt;CTK needs to properly export CTK_USE_QVTKOPENGLWIDGET so that the preprocessor correctly handles &amp;lt;tt&amp;gt;#if CTK_USE_QVTKOPENGLWIDGET&amp;lt;/tt&amp;gt; in its header files. Or, an alternative mechanism could be implemented.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Windows/Linux: CPU and GPU Volume Rendering display nothing or are corrupt. GPU Volume Rendering gives OpenGL errors.&amp;lt;/del&amp;gt; Disabling multisampling before creating the default surface format fixes this. See https://gitlab.kitware.com/vtk/vtk/issues/17095.&lt;br /&gt;
** &amp;lt;del&amp;gt;Mac: Slice views use only lower-left quarter of widget.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Set Qt::AA_EnableHighDpiScaling to enable automatic scaling based on the pixel density of the monitor. This enables High DPI for platforms other than Mac.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;Call setEnableHiDPI(true) on QVTKOpenGLWidgets.&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Scale SliceView geometry by its devicePixelRatio() before calling this-&amp;gt;SliceController-&amp;gt;setSliceViewSize().&amp;lt;/del&amp;gt;&lt;br /&gt;
*** &amp;lt;del&amp;gt;qMRMLSliceWidget: Observe change in devicePixelRatio (i.e. app dragged to another screen) and recompute slice view size.&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Volume Rendering transfer functions aren't displayed correctly. (ctkVTKChartView)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;Fix vtkWindowToImageFilter usage of method deprecated in VTK8.1: https://github.com/Kitware/VTK/blob/b8eae1e022cc71de5dcac578f4087b71d8573324/Rendering/Core/vtkWindowToImageFilter.h#L95&amp;lt;/del&amp;gt;&lt;br /&gt;
** Fix Qt deprecation warnings.&lt;br /&gt;
** Find and fix layout changes. For example, some widgets likely need to set QSizePolicy::Expanding, such as the exit application confirmation dialog.&lt;br /&gt;
** &amp;lt;del&amp;gt;Address &amp;quot;Policy CMP0020 is not set: Automatically link Qt executables to qtmain target on Windows&amp;quot; warnings.&amp;lt;/del&amp;gt;&lt;br /&gt;
** Test branch with VTK7 (OpenGL and OpenGL2 backends).&lt;br /&gt;
** Test branch with Qt4.&lt;br /&gt;
&lt;br /&gt;
* TODOs and Notes for the current integration&lt;br /&gt;
** Make Qt5.7.1 the required version if version greater than Qt5.6; a QWebEngine bug: https://bugreports.qt.io/browse/QTBUG-54762 was resolved in 5.7.1.&lt;br /&gt;
** Windows:&lt;br /&gt;
*** Tested build: VS2013, Qt5.7.1 downloaded from Qt's official releases. &lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1065056&lt;br /&gt;
*** &amp;lt;s&amp;gt;SlicerLauncherSettings.ini need to include path to Qt bin directory. Doing this manually right now &amp;lt;/s&amp;gt;&lt;br /&gt;
**** VS2015:&lt;br /&gt;
***** Configure with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=OFF&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Python 2.7: This patch should be applied. See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/161&lt;br /&gt;
***** DCMTK: To fix &amp;quot;DCMTK was configured to use the C++11 STL, [...]&amp;quot; error. Edit &amp;lt;code&amp;gt;C:\path\to\S-bld\DCMTK\CMake\osconfig.h.in&amp;lt;/code&amp;gt; and comment lines highlighted in  https://github.com/commontk/DCMTK/blob/d8ed091cda2b815226eafe41f5b4fe3bd22f8d5d/CMake/osconfig.h.in#L1096-L1100&lt;br /&gt;
****** To understand why: See https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/&lt;br /&gt;
****** From Microsoft: &amp;lt;code&amp;gt;We won’t update __cplusplus until the compiler fully conforms to the standard. Until then, you can check the value of _MSVC_LANG.&amp;lt;/code&amp;gt;&lt;br /&gt;
****** Or, could change logic in SuperBuild/External_DCMTK.cmake to only enable C++11 for UNIX platforms.&lt;br /&gt;
** Linux:&lt;br /&gt;
*** Tested build: Ubuntu 16.04, gcc, Qt5.7.1 downloaded from Qt's official releases:&lt;br /&gt;
*** 2017-08-01: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1073825&lt;br /&gt;
** MacOSX:&lt;br /&gt;
*** Tested build: Qt5.7.1 built from scratch with openssl support, MacOSX10.11&lt;br /&gt;
*** 2017-07-18: http://slicer.cdash.org/viewTest.php?onlyfailed&amp;amp;buildid=1064397&lt;br /&gt;
**** NOTE: WIP qt-easy-build to build Qt5.7.1 with OpenSSL support: https://github.com/msmolens/qt-easy-build/commits/wip-qt5; based on https://github.com/jcfr/qt-easy-build/pull/32&lt;br /&gt;
*** &amp;lt;s&amp;gt; Need to address manual install of the sql and cocoa plugin and platform files for sql and cocoa. &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Original branch:&lt;br /&gt;
https://github.com/jcfr/Slicer/commits/support-qt5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Work-in-progress branch that partially builds&lt;br /&gt;
** 2017-01:&lt;br /&gt;
*** https://github.com/Slicer/Slicer/pull/648 corresponding to branch https://github.com/Slicer/Slicer/compare/master...jcfr:support-qt5?expand=1&lt;br /&gt;
** 2016-12:&lt;br /&gt;
*** Slicer: https://github.com/Slicer/Slicer/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
*** CTK: https://github.com/commontk/CTK/compare/master...pieper:slicer-qt5?expand=1&lt;br /&gt;
&lt;br /&gt;
[[File:Slicer-Qt5-2016-12-12.PNG|thumb|right|A first running example [https://github.com/Slicer/Slicer/commit/08f40bd09ff525288710c1ccddbc09381264f5cd described in this commit]]]&lt;br /&gt;
&lt;br /&gt;
* Superbuild configure command on mac using Qt 5.7 stock downloads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/pieper/Qt/5.7/clang_64/bin/qmake \&lt;br /&gt;
  -DCMAKE_PREFIX_PATH:PATH=/Users/pieper/Qt/5.7/clang_64/ \&lt;br /&gt;
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Platform Notes ==&lt;br /&gt;
&lt;br /&gt;
Experimental build on Window:&lt;br /&gt;
* Visual Studio Community 2015&lt;br /&gt;
* Qt 5.7&lt;br /&gt;
** Include QtWebEngine and QtScript during install&lt;br /&gt;
** Select 2015 64 bit install&lt;br /&gt;
* Qt 5.8&lt;br /&gt;
** Use Visual Studio Community 2015 or above. Qt-5.8 does not support QtWebEngine for msvc 2013.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Slice viewers do not have the expected size after changing layout&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== All platforms ===&lt;br /&gt;
* Slicer build system upgrade: To be done  {{wip}}&lt;br /&gt;
** &amp;lt;s&amp;gt;Add  Slicer_QT_VERSION option that could be set to either 4 or 5 - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Fix qRestAPI to support Qt5 (or turn off Slicer_BUILD_EXTENSIONMANAGER_SUPPORT for testing) {{wip}} - See &lt;br /&gt;
** &amp;lt;s&amp;gt;Update use of QT4_* macros (see below) - See what is done in CTK&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** &amp;lt;s&amp;gt;The QT5_ versions of the macros appear to be directly compatible&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** [https://wiki.qt.io/Porting_from_QtWebKit_to_QtWebEngine Port from QtWebKit to QtWebEngine] &lt;br /&gt;
*** Update of classes using WebKit to work with &amp;lt;code&amp;gt;WebEngineView&amp;lt;/code&amp;gt; (these includes &amp;quot;Extension Manager&amp;quot;,  &amp;quot;Data Store&amp;quot;, &amp;quot;Chart View&amp;quot; and `qMRMLExpandingWebView`).&lt;br /&gt;
*** `qSlicerWebWidget` should be improved, moved to CTK and used for all widgets making use of a web view.&lt;br /&gt;
** &amp;lt;s&amp;gt;update PythonQt to the latest Qt version&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
*** Look at updating PythonQt to support QWebEngine&lt;br /&gt;
** &amp;lt;s&amp;gt;Fix [https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#Plugin_loading differences in plugin loading]&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Update packaging scripts (SlicerBlockInstallQt.cmake, SlicerCPackBundleFixup.cmake)&lt;br /&gt;
** Update build script to support qt5 (see https://github.com/jcfr/qt-easy-build )&lt;br /&gt;
** Update Slicer build instruction on developer wiki&lt;br /&gt;
* &amp;lt;del&amp;gt;Qt5::Network is now a dependency of Base/QTCore (Networking module in Qt5 has classes like QNetworkProxyFactory that were in Qt4's QtCore module)&amp;lt;/del&amp;gt;&lt;br /&gt;
* Transparency is handled differently: see problem in this discussion thread http://vtk.1045678.n5.nabble.com/Strange-renderering-with-mixed-polydata-volume-with-QVTKOpenGLWidget-td5743309.html and a related fix in ITKSnap https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx#L572-L574 and &lt;br /&gt;
* Command line arguments to expose webgl and webengine debugging&lt;br /&gt;
./Slicer-build/Slicer --enable-experimental-web-platform-features --enable-unsafe-es3-apis --remote-debugging-port=12117 --use-gl=desktop&lt;br /&gt;
* &amp;lt;del&amp;gt;CTK Python wrapping doesn't expose [https://github.com/commontk/CTK/blob/9e6df183277d2516f3522a8ef024450f0bcb5a57/Libs/Widgets/ctkWidgetsUtils.h#L43 grabWidget].&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* fix fox `libpng warning: iCCP: known incorrect sRGB profile`&lt;br /&gt;
&lt;br /&gt;
[https://s3.amazonaws.com/IsomicsPublic/Slicer-Qt5-patched-4.7.0-2017-01-24-linux-amd64.tar.gz Minimal working release experimental build] (no cli, ssl, simpleitk, ...) built on ubuntu 16.04, tested on debian 8&lt;br /&gt;
&lt;br /&gt;
* needed to manually copy shared libraries:&lt;br /&gt;
** libasound.so.2&lt;br /&gt;
** libxslt.so.1&lt;br /&gt;
** libsmime3&lt;br /&gt;
** libstdc++.so.6 (glibc mismatch, needed GLIBCXX_3.4.21) should build instead with manylinux&lt;br /&gt;
* like on mac, need to create bin/platfrms and bin/sqldrivers and copy in platforms/libqxcb.so and sqldrivers/libqsqlite.so&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
** &amp;lt;del&amp;gt;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).&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;strike&amp;gt;Mac crash in qSlicerUnitsSettingsPanelPrivate::addQuantity, appears to be corrupted model.&amp;lt;/strike&amp;gt;  [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25855 partly addressed by  r25855 ], finally resolved [https://github.com/Slicer/Slicer/commit/8e5d924dc938ad7f1efb22e13e327383f6347ada r25883].  Most expedient solution is probably to disable the units settings panel in the application settings since is not widely used in the application.&lt;br /&gt;
** Add libqcocoa.dylib and libqsqlite.dylib to package for mac&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlite.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/sqldrivers/&lt;br /&gt;
  mkdir Slicer-build/bin/Slicer.app/Contents/MacOS/platforms&lt;br /&gt;
  cp ~/Qt/5.7/clang_64/plugins/platforms/libqcocoa.dylib Slicer-build/bin/Slicer.app/Contents/MacOS/platforms/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Workarounds here:&lt;br /&gt;
https://gist.github.com/pieper/59de820ad08cf3c0f7a33926397e612d&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;qtstyleplugins library needs to be removed or ported to support windows&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** add declspec exports/imports&lt;br /&gt;
** create .lib for use in QTGUI&lt;br /&gt;
** support shared/static build?&lt;br /&gt;
* AppLauncher settings need to be update&lt;br /&gt;
** &amp;lt;s&amp;gt;Add to PYTHONPATH: &amp;lt;superbuild&amp;gt;/VTKv7-build/bin/Debug (currently lib not bin)&amp;lt;/s&amp;gt; {{done}}&lt;br /&gt;
** Add to PATH: &amp;lt;Qt&amp;gt;/5.7/msvc2013_64/bin&lt;br /&gt;
* Debug build runs very slowly - can it be improved?  Build is very slow too, but the application runs so slowly in debug mode that it is basically unusable (this is a change from previous version that were usable for testing real workflows in debug mode).&lt;br /&gt;
* Setting Slicer_USE_SimpleITK to ON in CMake results in compile-time errors.&lt;br /&gt;
* Creating a debug build (MSVC 2013, Qt5.7) creates a compile time error on PythonQt.cpp while building the CTK project with message: &lt;br /&gt;
** &amp;lt;pre&amp;gt;Error 1220 error C1128: number of sections exceeded object file format limit: compile with /bigobj &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example starting point command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake \&lt;br /&gt;
  -DQt5_DIR:FILEPATH=c:/Qt/5.7/msvc2013_64/lib/cmake/Qt5 \&lt;br /&gt;
  -DCMAKE_CONFIGUREATION_TYPES:STRING=Release \&lt;br /&gt;
  -DADDITIONAL_C_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DADDITIONAL_CXX_FLAGS:STRING=&amp;quot; /MP8&amp;quot; \&lt;br /&gt;
  -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_SimpleITK:BOOL=OFF \&lt;br /&gt;
  -DSlicer_USE_QtTesting:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_EXTENSIONMANAGER_SUPPORT:BOOL=OFF \&lt;br /&gt;
  -DSlicer_BUILD_DataStore:BOOL=OFF \&lt;br /&gt;
  -DSlicer_QT_VERSION:STRING=5 \&lt;br /&gt;
  -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
  -G&amp;quot;Visual Studio 12 2013 Win64&amp;quot; \&lt;br /&gt;
  c:/pieper/slicer4/latest/Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SuperBuild Dependencies==&lt;br /&gt;
&lt;br /&gt;
* PythonQt: &amp;lt;strike&amp;gt;Done {{done}} &amp;lt;/strike&amp;gt;&lt;br /&gt;
** 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)&lt;br /&gt;
** Need to merge fix for MSVC Debug build: https://github.com/commontk/PythonQt/pull/57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* CTK support: Potential minor issues&lt;br /&gt;
** ctkColorDialog implementation possibly incompatible with Qt5. Run Slicer test qMRMLColorPickerWidgetTest2. ctkColorDialog makes assumptions about QColorDialog's layout.&lt;br /&gt;
** Some tests fail.&lt;br /&gt;
&lt;br /&gt;
* VTK&lt;br /&gt;
** Support for QVTKWidget/QVTKWidget2: Done {{done}}&lt;br /&gt;
** QML support for VTK render windows: To Be Done {{wip}}&lt;br /&gt;
*** Not yet required by Slicer core&lt;br /&gt;
*** Jc@Kitware: We experimented with few approaches internally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ITKv4: NA {{done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage of QT4_ macros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ack --cmake -i &amp;quot;qt4&amp;quot;&lt;br /&gt;
CMake/SlicerMacroBuildModuleQtLibrary.cmake&lt;br /&gt;
116:  QT4_WRAP_CPP(MODULEQTLIBRARY_MOC_OUTPUT ${MODULEQTLIBRARY_MOC_SRCS})&lt;br /&gt;
118:  QT4_WRAP_UI(MODULEQTLIBRARY_UI_CXX ${MODULEQTLIBRARY_UI_SRCS})&lt;br /&gt;
121:    QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${MODULEQTLIBRARY_RESOURCES})&lt;br /&gt;
127:  QT4_ADD_RESOURCES(MODULEQTLIBRARY_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroTranslation.cmake&lt;br /&gt;
83:    QT4_CREATE_TRANSLATION(QM_OUTPUT_FILES ${FILES_TO_TRANSLATE} ${TS_FILES})&lt;br /&gt;
85:    QT4_ADD_TRANSLATION(QM_OUTPUT_FILES ${TS_FILES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildQtModule.cmake&lt;br /&gt;
132:  QT4_WRAP_CPP(LOADABLEMODULE_MOC_OUTPUT ${LOADABLEMODULE_MOC_SRCS})&lt;br /&gt;
134:  QT4_WRAP_UI(LOADABLEMODULE_UI_CXX ${LOADABLEMODULE_UI_SRCS})&lt;br /&gt;
137:    QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${LOADABLEMODULE_RESOURCES})&lt;br /&gt;
143:  QT4_ADD_RESOURCES(LOADABLEMODULE_QRC_SRCS ${Slicer_LOGOS_RESOURCE})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildApplication.cmake&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERAPPLIB_MOC_OUTPUT ${SLICERAPPLIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERAPPLIB_UI_CXX ${SLICERAPPLIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERAPPLIB_QRC_SRCS ${SLICERAPPLIB_RESOURCES})&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerBlockFindQtAndCheckVersion.cmake&lt;br /&gt;
22:# The CMake code used to find Qt4 has been factored out into this CMake script so that&lt;br /&gt;
27:  find_package(Qt4)&lt;br /&gt;
28:  if(NOT QT4_FOUND)&lt;br /&gt;
&lt;br /&gt;
CMake/SlicerMacroBuildBaseQtLibrary.cmake&lt;br /&gt;
35:#                           using QT4_WRAP_CPP CMake macro&lt;br /&gt;
38:#                           QT4_WRAP_UI CMake macro&lt;br /&gt;
47:#                           using QT4_ADD_RESOURCES&lt;br /&gt;
141:  QT4_WRAP_CPP(SLICERQTBASELIB_MOC_OUTPUT ${SLICERQTBASELIB_MOC_SRCS})&lt;br /&gt;
142:  QT4_WRAP_UI(SLICERQTBASELIB_UI_CXX ${SLICERQTBASELIB_UI_SRCS})&lt;br /&gt;
144:    QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${SLICERQTBASELIB_RESOURCES})&lt;br /&gt;
147:  QT4_ADD_RESOURCES(SLICERQTBASELIB_QRC_SRCS ${Slicer_SOURCE_DIR}/Resources/qSlicer.qrc)&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Models/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
15:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/Transforms/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
9:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Modules/Loadable/VolumeRendering/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
36:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/CMakeLists.txt&lt;br /&gt;
363:QT4_WRAP_CPP(MRMLWidgets_MOC_CXX ${MRMLWidgets_MOC_SRCS})&lt;br /&gt;
364:QT4_WRAP_UI(MRMLWidgets_UI_CXX ${MRMLWidgets_UI_SRCS})&lt;br /&gt;
365:QT4_ADD_RESOURCES(MRMLWidgets_QRC_CXX ${MRMLWidgets_QRC_SRCS})&lt;br /&gt;
&lt;br /&gt;
Libs/MRML/Widgets/Testing/CMakeLists.txt&lt;br /&gt;
139:QT4_WRAP_CPP(Tests_MOC_CXX ${Tests_MOC_SRCS})&lt;br /&gt;
140:QT4_GENERATE_MOCS(&lt;br /&gt;
&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
570:# Module name should be specified as they appear in FindQt4.cmake&lt;br /&gt;
&lt;br /&gt;
Base/QTCore/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
37:  QT4_GENERATE_MOCS(&lt;br /&gt;
42:    QT4_GENERATE_MOCS(&lt;br /&gt;
49:    QT4_GENERATE_MOCS(&lt;br /&gt;
54:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
60:    list(APPEND KIT_TEST_TARGET_LIBRARIES Qt4::QtTest)&lt;br /&gt;
&lt;br /&gt;
Base/QTGUI/Testing/Cxx/CMakeLists.txt&lt;br /&gt;
45:    QT4_GENERATE_MOCS(${KIT_TEST_MOC_SRCS})&lt;br /&gt;
48:  QT4_ADD_RESOURCES(Tests Resources/${KIT}Testing.qrc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migration Guide ==&lt;br /&gt;
&lt;br /&gt;
To do items (partial list):&lt;br /&gt;
* update loadable modules to use new plugin macros&lt;br /&gt;
* any use of QWebKit needs to switch to QWebEngine&lt;br /&gt;
&lt;br /&gt;
== List of extensions that may require updates ==&lt;br /&gt;
&lt;br /&gt;
TBD (probably all extensions need work)&lt;br /&gt;
&lt;br /&gt;
== Future works ==&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* 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&lt;br /&gt;
* http://blog.qt.io/blog/2014/11/27/qt-4-8-x-support-to-be-extended-for-another-year&lt;/div&gt;</summary>
		<author><name>Max.smolens</name></author>
		
	</entry>
</feed>