Android용 Qt Quick 를 활용한 Android 프래그먼트

ViewGroup 기반 객체를 사용하면 Android UI 레이아웃에 QtQuickView를 포함시킬 수 있습니다. 여기서는 FrameLayout을 사용하겠습니다.

QtQuickView API에 익숙하지 않다면, 이 튜토리얼을 진행하기 전에 관련 문서를 읽어보시기 바랍니다.

계속 진행하기 전에 Qt Academy 과정인 ‘Qt Academy: Android 앱에 Qt Quick 3D 콘텐츠 삽입하기’를 살펴보는 것이 좋습니다.

시작하려면 Android Studio에서 ‘ Bottom Navigation Views Activity ’ 템플릿을 사용하여 새 프로젝트를 생성하세요.

  1. QtQuickView를 표시할 프래그먼트(Fragment) 또는 액티비티(Activity)를 찾으세요. 여기서는 HomeFragment 와 fragment_home.xml 를 사용합니다.
  2. fragment_home.xml 에서 FrameLayout을 생성하고 아래와 같이 id 을 설정합니다.
    <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"/>

    이 ID를 잘 기억해 두십시오. 레이아웃을 바인딩할 때 HomeFragment 에서 이 ID를 참조해야 하기 때문입니다.

  3. HomeFragment.kt 파일 내에서 FrameLayout에 대한 import 문을 추가합니다:
    import android.widget.FrameLayout
  4. QtQuickView 및 Screen01 QML 타입에 대한 import 문을 추가하고 클래스 내부에서 이를 선언하십시오:
    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. QtQuickView에 Activity 인스턴스를 할당하고 requireActivity()
    homeQtQuickView = QtQuickView(requireActivity())
    homeQmlContent = Screen01()
  6. 레이아웃 매개변수를 초기화하십시오. 뷰를 프로그래밍 방식으로 생성하거나, 동적으로 추가하거나, 런타임에 변경하는 경우에만 이 단계를 수행해야 합니다. 그렇지 않은 경우 이 섹션을 건너뛸 수 있으며, ` params `와 ` addView()`를 사용할 필요가 없습니다.
    val params = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                                          ViewGroup.LayoutParams.MATCH_PARENT)
  7. 다음 방법 중 하나를 사용하여 뷰를 레이아웃에 추가하십시오:
    1. onCreateView() 내의 뷰 바인딩 사용: 먼저 앱의 build.gradle.kts 파일 내 android 섹션에 buildFeature 섹션을 추가하여 뷰 바인딩이 활성화되어 있는지 확인하십시오:
      buildFeatures {
          viewBinding = true
      }

      그런 다음 onCreateView() 파일에 다음 내용을 추가하세요:

      binding = FragmentHomeBinding.inflate( inflater, container, false)
      homeQtQuickView.loadContent(homeQmlContent)
      
      val root: View = binding.root
      binding.homeQmlFrame.addView(homeQtQuickView, params)
      ...
      return root
    2. onCreate() 내에서 findViewById() 사용하기:
      val qtFrame = findViewById(R.id.qtFrame)
      qmlFrame.addView(m_quickView, params)
      m_quickView.loadContent(homeQmlContent)

      다른 Android용Qt Quick 예제에서 사용법을 확인하세요.

이제 Qt Quick 의 콘텐츠가 홈 프래그먼트에 표시됩니다.

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