Fragments Android avec Qt Quick pour Android

Vous pouvez avoir un QtQuickView dans une disposition d'interface utilisateur Android en utilisant un objet basé sur ViewGroup. Ici, nous utiliserons un FrameLayout.

Si vous n'êtes pas familier avec l'API QtQuickView, lisez sa documentation avant de poursuivre ce tutoriel.

Avant de continuer, il est utile d'explorer le cours de la Qt Academy, Embedding Qt Quick 3D Content in an Android App (Intégrer du contenu 3D dans une application Android).

Pour commencer, créez un nouveau projet dans Android Studio en utilisant le modèle Bottom Navigation Views Activity.

  1. Localisez le fragment ou l'activité sous lequel vous voulez que votre QtQuickView soit visible. Ici, nous utilisons HomeFragment et fragment_home.xml.
  2. Dans fragment_home.xml, créez un FrameLayout et définissez son id comme indiqué ci-dessous.
    <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"/>

    Notez cet identifiant, car il doit être mentionné dans HomeFragment lors de la liaison de la disposition.

  3. Dans HomeFragment.kt, ajoutez une déclaration d'importation pour FrameLayout :
    import android.widget.FrameLayout
  4. Ajoutez vos importations pour vos types QtQuickView et Screen01 QML et déclarez-les à l'intérieur de la classe :
    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. Attribuez votre QtQuickView, en lui donnant l'instance Activity à l'aide de requireActivity()
    homeQtQuickView = QtQuickView(requireActivity())
    homeQmlContent = Screen01()
  6. Initialisez les paramètres de mise en page, si vous créez des vues par programme, ajoutez des vues dynamiquement ou les modifiez au moment de l'exécution. Sinon, vous pouvez sauter cette section et vous n'avez pas besoin d'utiliser params avec addView().
    val params = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                                          ViewGroup.LayoutParams.MATCH_PARENT)
  7. Ajoutez votre vue à la mise en page, soit avec :
    1. Utilisation de la liaison de vue à l'intérieur de onCreateView(): Vérifiez d'abord que la liaison de vue est activée en ajoutant la section buildFeature dans la section build.gradle.kts android de votre application :
      buildFeatures {
          viewBinding = true
      }

      Ajoutez ensuite ce qui suit à onCreateView():

      binding = FragmentHomeBinding.inflate( inflater, container, false)
      homeQtQuickView.loadContent(homeQmlContent)
      
      val root: View = binding.root
      binding.homeQmlFrame.addView(homeQtQuickView, params)
      ...
      return root
    2. Utilisation de findViewById() dans onCreate():
      val qtFrame = findViewById(R.id.qtFrame)
      qmlFrame.addView(m_quickView, params)
      m_quickView.loadContent(homeQmlContent)

      Voir l'utilisation d'autres Qt Quick pour des exemples Android.

Votre contenu Qt Quick apparaîtra désormais dans votre fragment d'accueil.

© 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.