Difference between revisions of "Documentation/Nightly/Developers/Tutorials/MigrationGuide/ITK4-to-ITK5"
Line 61: | Line 61: | ||
Q_INTERFACES(QDesignerCustomWidgetInterface); | Q_INTERFACES(QDesignerCustomWidgetInterface); | ||
} | } | ||
+ | |||
+ | ====Python==== | ||
+ | |||
+ | This migration guide points becomes obsolete: | ||
+ | https://www.slicer.org/wiki/Documentation/Nightly/Developers/Tutorials/MigrationGuide#Qt5:_Fix_error:_.E2.80.98class_QHeaderView.E2.80.99_has_no_member_named_.E2.80.98setResizeMode.E2.80.99 | ||
+ | |||
+ | Only Qt5 needs to be supported, so the following code can be simplified: | ||
+ | |||
+ | Before: | ||
+ | _setSectionResizeMode(self.horizontalHeader(), 0, qt.QHeaderView.Stretch) | ||
+ | def _setSectionResizeMode(header, *args, **kwargs): | ||
+ | if version.parse(qt.Qt.qVersion()) < version.parse("5.0.0"): | ||
+ | header.setResizeMode(*args, **kwargs) | ||
+ | else: | ||
+ | header.setSectionResizeMode(*args, **kwargs) | ||
+ | |||
+ | After: | ||
+ | self.horizontalHeader(0, qt.QHeaderView.Stretch) |
Revision as of 00:11, 8 March 2019
Home < Documentation < Nightly < Developers < Tutorials < MigrationGuide < ITK4-to-ITK5Contents
Transition from ITK4 to ITK5
This section lists categories of code changes necessary to build Slicer with ITK 5. Each category has a short description, an example error message, a suggested upgrade path, and references to relevant commits.
Referencing this list might be helpful if Slicer extensions require updates to be compatible with ITK 5.
Also check the ITK migration guide if more info is needed:
* https://github.com/InsightSoftwareConsortium/ITK/blob/master/Documentation/ITK5MigrationGuide.md (ITKv5 Migration Guide)
itkMultiThreader refactor
Replace lines like:
#include <itkMultiThreader.h> itk::MultiThreader::Pointer ProcessingThreader;
with:
#include <itkPlatformMultiThreader.h> itk::PlatformMultiThreader::Pointer ProcessingThreader;
SimpleFastMutexLock, FastMutexLock and MutexLock are deprecated
Instead use std::mutex available in C++11
Replace:
#include "itkSimpleFastMutexLock.h" #include "itkFastMutexLock.h" #include "itkMutexLock.h" SimpleFastMutexLock FastMutexLock MutexLock
with:
#include <mutex> std::mutex
Dead code after update to Qt >= 5.6.0
Remove any branch checking of QT_VERSION lesser than 5.6.0
#if(QT_VERSION < QT_VERSION_CHECKS(5, 6, 0)) // Modern Qt code #include <QDesignerCustomWidgetInterface> #else // Dead code #include <QtUiPlugin/QDesignerCustomWidgetInterface> #endif
class Q_SLICER_MODULE_SEGMENTATIONS_WIDGETS_PLUGINS_EXPORT qSlicerSegmentationsModuleWidgetsAbstractPlugin : public QDesignerCustomWidgetInterface { #if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)) Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetInterface") #endif Q_INTERFACES(QDesignerCustomWidgetInterface); }
After cleaning:
#include <QDesignerCustomWidgetInterface> class Q_SLICER_MODULE_SEGMENTATIONS_WIDGETS_PLUGINS_EXPORT qSlicerSegmentationsModuleWidgetsAbstractPlugin : public QDesignerCustomWidgetInterface { Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetInterface") Q_INTERFACES(QDesignerCustomWidgetInterface); }
Python
This migration guide points becomes obsolete: https://www.slicer.org/wiki/Documentation/Nightly/Developers/Tutorials/MigrationGuide#Qt5:_Fix_error:_.E2.80.98class_QHeaderView.E2.80.99_has_no_member_named_.E2.80.98setResizeMode.E2.80.99
Only Qt5 needs to be supported, so the following code can be simplified:
Before:
_setSectionResizeMode(self.horizontalHeader(), 0, qt.QHeaderView.Stretch) def _setSectionResizeMode(header, *args, **kwargs): if version.parse(qt.Qt.qVersion()) < version.parse("5.0.0"): header.setResizeMode(*args, **kwargs) else: header.setSectionResizeMode(*args, **kwargs)
After:
self.horizontalHeader(0, qt.QHeaderView.Stretch)