3.2 KiB
SituationMap Qt6 Migration Status
Summary
The SituationMap module has been successfully migrated from Qt5 to Qt6 at the source code level. All Qt5 API calls have been updated to Qt6 equivalents.
Completed Changes
Qt6 API Migrations
-
QStringView::slice() → sliced() - Fixed in 5 files:
- Symbology/sidc_codec.cpp
- Symbology/sidc_builder.cpp
- Symbology/sidc_builder_base.cpp
- Symbology/symbol_properties.cpp
- SymbologyImpl/symbol_dictionary_impl.cpp
-
QSortFilterProxyModel filter changes - Fixed in base_symbol_model.cpp:
- beginFilterChange()/endFilterChange() → invalidateFilter() (3 occurrences)
-
QFuture const-correctness - Fixed in base_symbol_model.cpp:
- Added
mutablekeyword to 3 lambdas capturing QFuture for waitForFinished() calls
- Added
Directory Structure
All 22 subdirectories from Qt5 have been copied to Qt6:
- admin_scripts, ArcGISQt5Hack, ElevationMap, EvalApps, FunctionDialog
- GeometryModel, GraphicalObjects, LayerAggregation, LocalSrv
- MapImpl, MapObjects, MapObjectsImpl, MathUtils, ModuleTests
- Portal, README, Resources, Rubberbands, SideBar
- Symbology, SymbologyGui, Tests, UnitTests, UnitTestsGeoModel, Utils
Build Status
Without ArcGIS (BUILD_ARCGIS=OFF)
✅ Source code compiles successfully ⚠️ Some unrelated modules (e.g., EEMFakeServer) require Qt6WebSockets which is not installed
With ArcGIS (BUILD_ARCGIS=ON)
❌ Linker errors - ArcGIS SDK binary incompatibility
Critical Issue: ArcGIS SDK Compatibility
Problem
The ArcGIS Maps SDK for Qt v300.0.0 library (libEsriRuntimeQt.a) was built against Qt 6.8+, but the system has Qt 6.2.4 installed.
Evidence:
- ArcGIS SDK template requires:
Qt 6.8.2minimum (per sdk/ideintegration/ArcGISRuntimeQtTemplate300_0_0/CMakeLists.txt) - System Qt version:
6.2.4 - Linker errors show undefined Qt6 internal symbols:
QMetaObject::invokeMethodImplQFutureInterfaceBase::hasException()QMetaType::registerHelperQtPrivate::QMetaTypeInterfaceWrapper
Required Resolution
To build with ArcGIS support, one of the following is needed:
-
Upgrade Qt to 6.8+ (recommended)
- Install Qt 6.8.2 or later
- Rebuild entire project against Qt 6.8+
-
Obtain Qt 6.2-compatible ArcGIS SDK
- Contact Esri for an ArcGIS SDK build compatible with Qt 6.2.x
- Note: ArcGIS SDK v300 may not support Qt 6.2
-
Disable ArcGIS temporarily
- Build with
-DBUILD_ARCGIS=OFF - Complete migration of non-ArcGIS code
- Re-enable ArcGIS when compatible SDK is available
- Build with
Next Steps
- Immediate: Decide on ArcGIS strategy (upgrade Qt, get compatible SDK, or disable)
- If disabling ArcGIS: Complete migration of remaining 27 plugin files with beginFilterChange()/endFilterChange()
- After ArcGIS resolution: Run full test suite to validate migration
Files Modified in This Session
- Lts/Viewer/SituationMap/Symbology/sidc_codec.cpp
- Lts/Viewer/SituationMap/Symbology/sidc_builder.cpp
- Lts/Viewer/SituationMap/Symbology/sidc_builder_base.cpp
- Lts/Viewer/SituationMap/Symbology/symbol_properties.cpp
- Lts/Viewer/SituationMap/SymbologyImpl/symbol_dictionary_impl.cpp
- Lts/Viewer/SituationMap/SymbologyImpl/base_symbol_model.cpp