Files
qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/Viewer/SituationMap/MIGRATION_STATUS.md
T

82 lines
3.2 KiB
Markdown

# 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
1. **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
2. **QSortFilterProxyModel filter changes** - Fixed in base_symbol_model.cpp:
- beginFilterChange()/endFilterChange() → invalidateFilter() (3 occurrences)
3. **QFuture const-correctness** - Fixed in base_symbol_model.cpp:
- Added `mutable` keyword to 3 lambdas capturing QFuture for waitForFinished() calls
### 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.2` minimum (per sdk/ideintegration/ArcGISRuntimeQtTemplate300_0_0/CMakeLists.txt)
- System Qt version: `6.2.4`
- Linker errors show undefined Qt6 internal symbols:
- `QMetaObject::invokeMethodImpl`
- `QFutureInterfaceBase::hasException()`
- `QMetaType::registerHelper`
- `QtPrivate::QMetaTypeInterfaceWrapper`
### Required Resolution
To build with ArcGIS support, one of the following is needed:
1. **Upgrade Qt to 6.8+** (recommended)
- Install Qt 6.8.2 or later
- Rebuild entire project against Qt 6.8+
2. **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
3. **Disable ArcGIS temporarily**
- Build with `-DBUILD_ARCGIS=OFF`
- Complete migration of non-ArcGIS code
- Re-enable ArcGIS when compatible SDK is available
## Next Steps
1. **Immediate**: Decide on ArcGIS strategy (upgrade Qt, get compatible SDK, or disable)
2. **If disabling ArcGIS**: Complete migration of remaining 27 plugin files with beginFilterChange()/endFilterChange()
3. **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