82 lines
3.2 KiB
Markdown
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
|