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

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

  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