Update 5 is here!

578
0
04-10-2019 07:07 AM
Labels (1)
LucasDanzinger
Esri Frequent Contributor
1 0 578

Yesterday, we released Update 5 of ArcGIS Runtime SDK for Qt version 100. To get an overview all of the new functionality across all of the Runtime SDKs, you can read the blog on the ArcGIS Blog. Some notable new features include support for WFS, 3D subsurface navigation, mobile scene packages, and several new 3D layer types. In addition to this, the Qt team has been working very hard on some additional work items throughout the release. Here are some noteworthy things to know about the Update 5 release for the Qt SDK:

Qt 5.12 Upgrade


We updated our build environment to be based on Qt 5.12. This brought us a whole host of new features such as improved performance and memory consumption. In addition, 5.12 brought in support for Xcode 10, which is critical for apps that are deployed to Apple's AppStore. Finally, 5.12 brought in a compiler change in Android from gcc to clang. This allowed us to update our NDK minimum and bring in support for Android armv8 (64-bit). This is crucial for apps that are deployed to the Google Play Store and also opens the door for performance gains.

C++ 11 range-based for loops


We now fully support using C++ 11 style range-based for loops with our list model types. This means you can migrate your C-style loops from this:

for (int i = 1; i < m_graphicsOverlay->graphics()->size(); i++)
{
}

to this:

for (auto graphic : *(m_graphicsOverlay->graphics()))
{
}

New compiler warnings for deprecations


We have refactored the selection mechanism for visually selecting features and graphics in 2D and 3D. As such, we have some newly deprecated members. As part of this release, we have introduced new compiler warnings that will warn you if you are using these deprecated members. We plan to use this pattern going forward to notify you of any API deprecations.

ECMAScript 6 & 7 Support


One of the cool new features of Qt 5.12 is the inclusion of ES 6 & 7 features within QML's JavaScript engine. We have sanity tested many of the newer JS language features and everything thus far is working as expected. Some new features include arrow functions, string interpolation, constant variables (const instead of var), block scoped variables (let instead of var), function default parameters, classes, static functions, and more. This was one of the topics of discussion at this year's Dev Summit, so feel free to check out this video of the presentation if you'd like to hear more.

TableView


Qt 5.12 brings in support for a new Qt Quick Table View. At the Dev Summit last month, Neil MacDonald gave an interesting talk on how you can use our AttributeListModel and the Qt Quick Table View to build an attribute table. You can watch this presentation here.

Sample Improvements


Upgrading our minimum to Qt 5.12 means that we now fully embrace Qt Quick Controls 2 and have removed Qt Quick Controls 1 from all samples (Qt Quick Controls 1 were deprecated at 5.11). As such, we now have a unified style throughout the samples and our sample viewer app, and we were also able to utilize Qt's new high DPI support. This can be enabled by setting 

QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

in your main.cpp. Once this is enabled, your code can be cleaned up by removing all of the scaleFactor multiplications that were previously required to scale pixel values on different DPI devices. In the coming weeks, we will be adding more Update 5 samples to the master branch of our GitHub page, so please continue to watch the repo here.

Platform updates


As mentioned in our 100.4 release notes, 100.5 will no longer support Ubuntu 14.04, macOS Sierra, or iOS 10. As such, 100.5 also dropped support for 32-bit iOS, which means our static library size was cut in half, and the macOS installer is now significantly smaller than previous releases. As mentioned earlier, we now support 64-bit android, and we also have an embedded Linux beta available for ARM devices. You can join this beta program through the early adopter site.

About the Author
I'm a Geographer working in Product Development at Esri, focusing my time on the ArcGIS Runtime SDKs. I'm an Esri Certified ArcGIS Desktop Professional (10 years experience working with ArcGIS) with a wide range of technical skills including native application development, spatial databases, desktop/web GIS, and scripting. My Master's degree is in GIS with a focus in Natural Resource Management. Currently, I'm most interested in building cross-platform and lightweight apps using our ArcGIS Runtime SDK for Qt.