Skip To Content ArcGIS for Developers Sign In Dashboard

SceneQuickView Class

class Esri::ArcGISRuntime::SceneQuickView

A 3D scene implemented as a QQuickItem component. More...

Header: #include <SceneQuickView>
Since: Esri::ArcGISRuntime 100.0
Inherits: QQuickFramebufferObject and Esri::ArcGISRuntime::SceneView

This class was introduced in Esri::ArcGISRuntime 100.0.

Properties

Public Functions

SceneQuickView(Esri::ArcGISRuntime::Scene *scene, QQuickItem *parent = nullptr)
SceneQuickView(QQuickItem *parent = nullptr)
virtual ~SceneQuickView() override
QVariant attributionTop() const

Reimplemented Public Functions

virtual void setManualRendering(bool manualRendering) override

Signals

void attributionRectChanged()
void attributionTextChanged()
void attributionTopChanged()
void drawStatusChanged(Esri::ArcGISRuntime::DrawStatus status)
void errorOccurred(Esri::ArcGISRuntime::Error error)
void exportImageCompleted(QUuid taskId, QImage image)
void identifyGraphicsOverlayCompleted(QUuid taskId, Esri::ArcGISRuntime::IdentifyGraphicsOverlayResult *identifyResult)
void identifyGraphicsOverlaysCompleted(QUuid taskId, QList<Esri::ArcGISRuntime::IdentifyGraphicsOverlayResult *> identifyResults)
void identifyLayerCompleted(QUuid taskId, Esri::ArcGISRuntime::IdentifyLayerResult *identifyResult)
void identifyLayersCompleted(QUuid taskId, QList<Esri::ArcGISRuntime::IdentifyLayerResult *> identifyResults)
void keyPressed(QKeyEvent &keyEvent)
void keyReleased(QKeyEvent &keyEvent)
void layerViewStateChanged(Esri::ArcGISRuntime::Layer *layer, Esri::ArcGISRuntime::LayerViewState layerViewState)
void manualRenderingChanged()
void mouseClicked(QMouseEvent &mouseEvent)
void mouseDoubleClicked(QMouseEvent &mouseEvent)
void mouseMoved(QMouseEvent &mouseEvent)
void mousePressed(QMouseEvent &mouseEvent)
void mousePressedAndHeld(QMouseEvent &mouseEvent)
void mouseReleased(QMouseEvent &mouseEvent)
void mouseWheelChanged(QWheelEvent &wheelEvent)
void navigatingChanged()
void rectChanged(QRectF rect)
void sceneChanged()
void screenToLocationCompleted(QUuid taskId, Esri::ArcGISRuntime::Point location)
void setBookmarkCompleted(bool succeeded)
void setViewpointCameraCompleted(bool succeeded)
void setViewpointCompleted(bool succeeded)
void spatialReferenceChanged()
void touched(QTouchEvent &event)
void viewpointChanged()

Detailed Description

A SceneQuickView renders data in a 3D scene and allows users to interact with the scene. In an MVC architecture, a SceneQuickView represents the view and a scene represents the model.

A SceneQuickView implements a scene view as a QQuickItem component. This allows it to be used in a user interface coded in QML while being controlled by C++ code.

Example:

Register the SceneQuickView type as a QML type:

qmlRegisterType<SceneQuickView>("Esri.Samples", 1, 0, "SceneView");

Declare the SceneQuickView in QML, and assign an object name:

SceneView {
    objectName: "sceneView"
    anchors.fill: parent
}

Rectangle {
    anchors {
        top: parent.top
        left: parent.left
        margins: 5
    }
    width: childrenRect.width
    height: childrenRect.height
    color: "#000000"
    opacity: .8
    radius: 5

    MouseArea {
        anchors.fill: parent
        onClicked: mouse.accepted = true
        onWheel: wheel.accepted = true
    }

    ColumnLayout {
        Text {
            Layout.margins: 2
            Layout.alignment: Qt.AlignHCenter
            text: qsTr("Draped mode")
            color: "white"
        }

        Switch {
            id: surfacePlacementMode
            Layout.alignment: Qt.AlignHCenter
            Layout.margins: 2

            onCheckedChanged: changeDrapedVisibility();
        }
    }
}

Rectangle {
    anchors {
        top: parent.top
        right: parent.right
        margins: 5
    }
    width: childrenRect.width
    height: childrenRect.height
    color: "#000000"
    opacity: .8
    radius: 5

    MouseArea {
        anchors.fill: parent
        onClicked: mouse.accepted = true
        onWheel: wheel.accepted = true
    }

    ColumnLayout {
        Text {
            id: zValueSliderLabel
            text: qsTr("Z-Value")
            color: "white"
            Layout.margins: 2
            Layout.alignment: Qt.AlignHCenter
        }

        Slider {
            id: zValueSlider
            from: 0
            to: 140
            value: 70
            Layout.alignment: Qt.AlignHCenter
            Layout.margins: 2
            orientation: Qt.Vertical

            onMoved: changeZValue(value);

            // Custom slider handle that displays the current value
            handle: Item {
                x: parent.leftPadding + parent.availableWidth / 2 - headingHandleNub.width / 2
                y: parent.topPadding + parent.visualPosition * (parent.availableHeight - headingHandleNub.height)

                Rectangle {
                    id: headingHandleNub
                    color: headingHandleRect.color
                    radius: width * 0.5
                    width: 20
                    height: width
                }
                Rectangle {
                    id: headingHandleRect
                    height: childrenRect.height
                    width: childrenRect.width
                    radius: 3
                    x: headingHandleNub.x - width
                    y: headingHandleNub.y - height / 2 + headingHandleNub.height / 2
                    color: zValueSlider.background.children[0].color

                    Text {
                        id: headingValue
                        font.pixelSize: 14
                        padding: 3
                        horizontalAlignment: Qt.AlignHCenter
                        verticalAlignment: Qt.AlignVCenter
                        text: (zValueSlider.value).toFixed(0)
                        color: "white"
                    }
                }
            }
        }
    }
}

Obtain the SceneQuickView from C++ and set a Scene to the SceneQuickView:

// Create a scene with the imagery basemap and world elevation surface
m_sceneView = findChild<SceneQuickView*>("sceneView");
Scene* scene = new Scene(Basemap::imagery(this), this);
Surface* surface = new Surface(this);
surface->elevationSources()->append(new ArcGISTiledElevationSource(QUrl("https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer"), this));
scene->setBaseSurface(surface);

// Create scene layer from the Brest, France scene server.
ArcGISSceneLayer* sceneLayer = new ArcGISSceneLayer(QUrl("https://tiles.arcgis.com/tiles/P3ePLMYs2RVChkJx/arcgis/rest/services/Buildings_Brest/SceneServer"), this);
scene->operationalLayers()->append(sceneLayer);

See also Scene, SceneView, and GeoView.

Property Documentation

attributionRect : const QRectF

This property holds the bounding rectangle of the attribution text (read-only).

This bounding rectangle can be used when calculating where items can be displayed on the screen so they are not overlapping the attribution text.

This property was introduced in Esri::ArcGISRuntime 100.3.

Notifier signal:

attributionTop : const QVariant

This property holds the top anchor line of the attribution bounding rectangle as an AnchorLine variant (read-only).

Other QtQuick items can be anchored to this property so that they display above the attribution text.

This property was introduced in Esri::ArcGISRuntime 100.1.

Access functions:

QVariant attributionTop() const

Notifier signal:

manualRendering : bool

This property holds whether the SceneView is under manual rendering control.

Note: manual rendering is only supported on iOS and Android platforms.

This property was introduced in Esri::ArcGISRuntime 100.6.

Access functions:

virtual void setManualRendering(bool manualRendering) override

Notifier signal:

See also isManualRendering.

Member Function Documentation

SceneQuickView::SceneQuickView(Esri::ArcGISRuntime::Scene *scene, QQuickItem *parent = nullptr)

Constructor that takes a scene and an optional parent.

SceneQuickView::SceneQuickView(QQuickItem *parent = nullptr)

Default constructor that takes an optional parent.

[signal] void SceneQuickView::attributionRectChanged()

Emitted when the attribution bounding rectangle changes.

Note: Notifier signal for property attributionRect.

This function was introduced in Esri::ArcGISRuntime 100.1.

[signal] void SceneQuickView::attributionTextChanged()

Emitted when the attribution text changes.

This function was introduced in Esri::ArcGISRuntime 100.1.

[signal] void SceneQuickView::attributionTopChanged()

Emitted when the attributionTop anchor line changes.

Note: Notifier signal for property attributionTop.

This function was introduced in Esri::ArcGISRuntime 100.1.

[signal] void SceneQuickView::drawStatusChanged(Esri::ArcGISRuntime::DrawStatus status)

Signal emitted when the DrawStatus changes.

[signal] void SceneQuickView::errorOccurred(Esri::ArcGISRuntime::Error error)

Signal emitted when an error occurs.

  • error - Details about the error.

[signal] void SceneQuickView::exportImageCompleted(QUuid taskId, QImage image)

Signal emitted when exportImage has completed.

[signal] void SceneQuickView::identifyGraphicsOverlayCompleted(QUuid taskId, Esri::ArcGISRuntime::IdentifyGraphicsOverlayResult *identifyResult)

Emitted when an identifyGraphicsOverlay operation completes.

  • taskId - The task ID for the asynchronous operation.
  • identifyResult - The identify graphics overlay result object.

The returned IdentifyGraphicsOverlayResult object has the SceneQuickView as its parent.

See also Returned QObjects Parenting.

[signal] void SceneQuickView::identifyGraphicsOverlaysCompleted(QUuid taskId, QList<Esri::ArcGISRuntime::IdentifyGraphicsOverlayResult *> identifyResults)

Emitted when an identifyGraphicsOverlays operation completes.

The returned IdentifyGraphicsOverlayResult objects have the SceneQuickView as their parent.

See also Returned QObjects Parenting.

[signal] void SceneQuickView::identifyLayerCompleted(QUuid taskId, Esri::ArcGISRuntime::IdentifyLayerResult *identifyResult)

Emitted when an identifyLayer operation completes.

  • taskId - The task ID for the asynchronous operation.
  • identifyResult - An IdentifyLayerResult object.

The returned IdentifyLayerResult object has the SceneQuickView as its parent.

See also Returned QObjects Parenting.

[signal] void SceneQuickView::identifyLayersCompleted(QUuid taskId, QList<Esri::ArcGISRuntime::IdentifyLayerResult *> identifyResults)

Emitted when an identifyLayers operation completes.

  • taskId - The task ID for the asynchronous operation.
  • identifyResults - A list of IdentifyLayerResult.

The returned IdentifyLayerResult objects have the SceneQuickView as their parent.

See also Returned QObjects Parenting.

[signal] void SceneQuickView::keyPressed(QKeyEvent &keyEvent)

Emitted when a key pressed has been detected.

  • keyEvent - The key event.

[signal] void SceneQuickView::keyReleased(QKeyEvent &keyEvent)

Emitted when a key release has been detected.

  • keyEvent - The key event.

[signal] void SceneQuickView::layerViewStateChanged(Esri::ArcGISRuntime::Layer *layer, Esri::ArcGISRuntime::LayerViewState layerViewState)

Signal emitted when the LayerViewState changes.

  • layer - The layer that had a state change.
  • layerViewState - The LayerViewState with the new state information.

The returned Layer object has the SceneQuickView as its parent.

See also Returned QObjects Parenting.

[signal] void SceneQuickView::manualRenderingChanged()

Signal emitted when manualRendering changes.

Note: Notifier signal for property manualRendering.

This function was introduced in Esri::ArcGISRuntime 100.6.

[signal] void SceneQuickView::mouseClicked(QMouseEvent &mouseEvent)

Emitted when mouse is pressed and released over the same location.

  • mouseEvent - The mouse event.

[signal] void SceneQuickView::mouseDoubleClicked(QMouseEvent &mouseEvent)

Emitted when a double click even is detected.

  • mouseEvent - The mouse event.

[signal] void SceneQuickView::mouseMoved(QMouseEvent &mouseEvent)

Emitted when mouse is moved.

  • mouseEvent - The mouse event.

[signal] void SceneQuickView::mousePressed(QMouseEvent &mouseEvent)

Emitted when mouse is pressed.

  • mouseEvent - The mouse event.

[signal] void SceneQuickView::mousePressedAndHeld(QMouseEvent &mouseEvent)

Emitted when there is a long press and hold (currently 800ms) on the same point.

  • mouseEvent - The mouse event.

[signal] void SceneQuickView::mouseReleased(QMouseEvent &mouseEvent)

Emitted when mouse is release.

  • mouseEvent - The mouse event.

[signal] void SceneQuickView::mouseWheelChanged(QWheelEvent &wheelEvent)

Emitted when mouse wheel movement has been detected.

  • wheelEvent - The wheel event.

Signal emitted when the view has started or completed navigating.

[signal] void SceneQuickView::rectChanged(QRectF rect)

Emitted when the visible area changes.

  • rect - The new rect representing the visible area.

[signal] void SceneQuickView::sceneChanged()

Emitted when the scene changes.

This function was introduced in Esri::ArcGISRuntime 100.3.

[signal] void SceneQuickView::screenToLocationCompleted(QUuid taskId, Esri::ArcGISRuntime::Point location)

Signal emitted when the screenToLocation operation completes.

  • taskId - The task ID from the screenToLocation async task.
  • location - The location on the scene view.

[signal] void SceneQuickView::setBookmarkCompleted(bool succeeded)

Signal emitted when a bookmark has been set.

  • succeeded - Whether the bookmark was successfully set.

This function was introduced in Esri::ArcGISRuntime 100.3.

[signal] void SceneQuickView::setViewpointCameraCompleted(bool succeeded)

Signal emitted when the viewpoint with camera has been set.

  • succeeded - Whether the viewpoint was successfully set.

[signal] void SceneQuickView::setViewpointCompleted(bool succeeded)

Signal emitted when the viewpoint has been set.

  • succeeded - Whether the viewpoint was successfully set.

[signal] void SceneQuickView::spatialReferenceChanged()

Signal emitted when the SpatialReference changed.

[signal] void SceneQuickView::touched(QTouchEvent &event)

Emitted when a touch event has been detected.

Accept the event to prevent the SceneQuickView from performing its default gesture interaction behavior.

  • event - The touch event.

[signal] void SceneQuickView::viewpointChanged()

Emitted when the viewpoint changes.

[override virtual] SceneQuickView::~SceneQuickView()

Destructor.

QVariant SceneQuickView::attributionTop() const

Gets the top anchor line of the attribution bounding rectangle as an AnchorLine variant.

Other QtQuick items can be anchored to this property so that they display above the attribution text.

Note: Getter function for property attributionTop.

This function was introduced in Esri::ArcGISRuntime 100.1.

[override virtual] void SceneQuickView::setManualRendering(bool manualRendering)

Reimplements: SceneView::setManualRendering(bool manualRendering).

Sets whether manual rendering is enabled to manualRendering.

This is a convenience property to allow access directly from QML.

Note: Setter function for property manualRendering.

This function was introduced in Esri::ArcGISRuntime 100.6.

See also SceneView::isManualRendering.


Feedback on this topic?