Android-Fragmente mit „ Qt Quick “ für Android

Sie können ein QtQuickView in einem Android-UI-Layout einbinden, indem Sie ein auf ViewGroup basierendes Objekt verwenden. Hier verwenden wir ein FrameLayout.

Wenn Sie mit der QtQuickView-API noch nicht vertraut sind, lesen Sie bitte die Dokumentation, bevor Sie mit diesem Tutorial fortfahren.

Bevor Sie fortfahren, lohnt es sich, den Qt Academy-Kurs „Qt Academy: Einbetten von Qt Quick 3D -Inhalten in eine Android-App“ durchzuarbeiten.

Erstellen Sie zunächst in Android Studio ein neues Projekt mithilfe der Vorlage „ Bottom Navigation Views Activity “.

  1. Suchen Sie das Fragment oder die Aktivität, unter der Ihr QtQuickView sichtbar sein soll. Hier verwenden wir „ HomeFragment “ und „ fragment_home.xml “.
  2. Erstellen Sie in „ fragment_home.xml “ ein „FrameLayout“ und legen Sie dessen „ id “ wie unten gezeigt fest.
    <FrameLayout
    android:id="@+id/homeQmlFrame"
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHeight_percent="0.8"/>

    Notieren Sie sich diese ID, da sie in „ HomeFragment “ beim Binden des Layouts benötigt wird.

  3. Fügen Sie in „HomeFragment.kt“ eine Importanweisung für „FrameLayout“ hinzu:
    import android.widget.FrameLayout
  4. Fügen Sie die Importe für Ihren QtQuickView und den QML-Typ „Screen01“ hinzu und deklarieren Sie diese innerhalb der Klasse:
    import org.qtproject.qt.android.QtQuickView
    import org.qtproject.example.RoboApp.RoboContent.Screen01
    
    class HomeFragment : Fragment() {
    
    private var binding: FragmentHomeBinding? = null
    private lateinit var homeQmlContent: Screen01
    private lateinit var homeQtQuickView: QtQuickView
  5. Weisen Sie Ihrem QtQuickView die Activity-Instanz zu, indem Sie requireActivity()
    homeQtQuickView = QtQuickView(requireActivity())
    homeQmlContent = Screen01()
  6. Initialisieren Sie die Layout-Parameter, wenn Sie Ansichten programmgesteuert erstellen, dynamisch hinzufügen oder zur Laufzeit ändern. Andernfalls können Sie diesen Abschnitt überspringen und müssen ` params ` mit ` addView()` nicht verwenden.
    val params = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                                          ViewGroup.LayoutParams.MATCH_PARENT)
  7. Fügen Sie Ihre Ansicht dem Layout hinzu, entweder mit:
    1. Verwendung der View-Bindung innerhalb von „ onCreateView() “: Überprüfen Sie zunächst, ob die View-Bindung aktiviert ist, indem Sie den Abschnitt „ buildFeature “ in den „android“-Abschnitt der Datei „build.gradle.kts“ Ihrer App einfügen:
      buildFeatures {
          viewBinding = true
      }

      Fügen Sie anschließend Folgendes in „ onCreateView() “ hinzu:

      binding = FragmentHomeBinding.inflate( inflater, container, false)
      homeQtQuickView.loadContent(homeQmlContent)
      
      val root: View = binding.root
      binding.homeQmlFrame.addView(homeQtQuickView, params)
      ...
      return root
    2. Verwendung von „ findViewById() “ in „ onCreate() “:
      val qtFrame = findViewById(R.id.qtFrame)
      qmlFrame.addView(m_quickView, params)
      m_quickView.loadContent(homeQmlContent)

      Beispiele für die Verwendung in anderen „Qt Quick “-Beispielen für Android finden Sie hier.

Der Inhalt Ihres „ Qt Quick “ wird nun in Ihrem Start-Fragment angezeigt.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.