Qt Quick 3D - Particles 3D Testbed Example

 // Copyright (C) 2021 The Qt Company Ltd.
 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

 import QtQuick
 import QtQuick3D
 import QtQuick3D.Particles3D
 import QtQuick.Controls

 Window {
     id: rootWindow

     readonly property url startupView: "StartupView.qml"

     QtObject {
         id: settings
         // Antialiasing mode & quality used in all examples.
         property var antialiasingMode: SceneEnvironment.NoAA
         property var antialiasingQuality: SceneEnvironment.High
         // Toggle default visibility of these views
         property bool showSettingsView: true
         property bool showLoggingView: false
         // Fonts in pointSizes
         // These are used mostly on examples in 3D side
         property real fontSizeLarge: 16
         // These are used mostly on settings
         property real fontSizeSmall: 10
     }

     readonly property real iconSize: 16 + Math.max(width, height) * 0.05

     width: 1280
     height: 720
     visible: true
     title: qsTr("Qt Quick 3D Particles3D Testbed")
     color: "#000000"

     Loader {
         id: loader
         anchors.fill: parent
         source: startupView
     }

     Button {
         id: backButton
         anchors.left: parent.left
         anchors.top: parent.top
         width: rootWindow.iconSize
         height: width
         opacity: loader.source !== startupView
         visible: opacity
         icon.source: "qrc:/qml/images/arrow_icon.png"
         icon.width: backButton.width * 0.3
         icon.height: backButton.height * 0.3
         icon.color: "transparent"
         background: Rectangle {
             color: "transparent"
         }
         onClicked: {
             loader.source = startupView;
         }
         Behavior on opacity {
             NumberAnimation {
                 duration: 400
                 easing.type: Easing.InOutQuad
             }
         }
     }

 }