Android-Fragmente mit Qt Quick für Android
Sie können eine QtQuickView in einem Android UI Layout haben, indem Sie ein ViewGroup-basiertes Objekt verwenden. Hier werden wir ein FrameLayout verwenden.
Wenn Sie mit der QtQuickView-API nicht vertraut sind, sollten Sie ihre Dokumentation lesen, bevor Sie mit diesem Tutorial fortfahren.
Bevor Sie fortfahren, lohnt es sich, den Qt Academy-Kurs Einbetten von Qt Quick 3D-Inhalten in eine Android-App zu lesen.
Um zu beginnen, erstellen Sie ein neues Projekt in Android Studio unter Verwendung der Vorlage Bottom Navigation Views Activity.
- Suchen Sie das Fragment oder die Aktivität, unter der Ihr QtQuickView sichtbar sein soll. Hier verwenden wir
HomeFragment
undfragment_home.xml
. - Erstellen Sie in
fragment_home.xml
ein FrameLayout und setzen Sie dessenid
wie unten gezeigt.<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 referenziert werden muss. - Fügen Sie in HomeFragment.kt eine Import-Anweisung für FrameLayout hinzu:
import android.widget.FrameLayout
- Fügen Sie Ihre Importe für Ihre QtQuickView und Screen01 QML-Typen hinzu und deklarieren Sie sie 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
- Weisen Sie Ihre QtQuickView zu und geben Sie ihr die Activity-Instanz mit
requireActivity()
homeQtQuickView = QtQuickView(requireActivity()) homeQmlContent = Screen01()
- Initialisieren Sie die Layout-Parameter, wenn Sie Views programmatisch erstellen, dynamisch hinzufügen oder zur Laufzeit ändern. Andernfalls können Sie diesen Abschnitt überspringen, und Sie brauchen
params
mitaddView()
nicht zu verwenden.val params = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
- Fügen Sie Ihre Ansicht in das Layout ein, entweder mit:
- Verwendung von View-Binding innerhalb von
onCreateView()
: Stellen Sie zunächst sicher, dass View-Binding aktiviert ist, indem Sie den AbschnittbuildFeature
in den Abschnitt build.gradle.kts android Ihrer Anwendung einfügen:buildFeatures { viewBinding = true }
Fügen Sie dann 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
- Verwendung von
findViewById()
innerhalb vononCreate()
:val qtFrame = findViewById(R.id.qtFrame) qmlFrame.addView(m_quickView, params) m_quickView.loadContent(homeQmlContent)
Siehe Verwendung von anderen Qt Quick für Android-Beispiele.
- Verwendung von View-Binding innerhalb von
Der Inhalt von Qt Quick wird nun in Ihrem Home-Fragment angezeigt.
© 2025 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.