Python

[PyQt6] Dialogs in QML

llHoYall 2022. 11. 20. 16:53

이번 포스팅에서는 다이얼로그에 대해서 살펴보겠습니다.

기본 형태를 먼저 다뤄보고, 가장 많이 사용하는 파일 선택 다이얼로그도 맛보기로 다뤄볼게요.

기본 application 작성은 이전 포스팅을 참고하여 따라와주세요.

2022.11.03 - [Python] - [PyQt6] Getting Started with QtQuick

Create Dialog

// main.qml

import QtQuick
import QtQuick.Layouts
import QtQuick.Controls
import QtQuick.Controls.Material

ApplicationWindow {
  visible: true
  width: 640
  height: 480
  title: "Example App"

  Material.theme: Material.Dark
  Material.primary: Material.Orange
  Material.accent: Material.Orange

  Button {
    anchors.centerIn: parent
    text: "Open"
    onClicked: idDialog.open()
  }

  Dialog {
    id: idDialog
    title: "Dialog Example"
    standardButtons: Dialog.Ok | Dialog.Cancel

    Label {
      text: "Select button"
    }

    onAccepted: console.log("Ok clicked")
    onRejected: console.log("Cancel clicked")
  }
}

Button을 하나 만들어 버튼을 클릭할 경우 Dialog가 열리도록 하였습니다.

Dialog는 Ok와 Cancel 버튼 2개를 놓고, Label만 하나 놓았어요.

각각의 버튼을 클릭하면 메세지가 출력되도록 하였고요.

기본 사용은 매우 쉽죠?

사용 가능한 버튼 종류는 다음 링크를 참고해주세요.

https://doc.qt.io/qt-6/qml-qtquick-controls2-dialog.html#standardButtons-prop

Create FileDialog

import QtQuick.Dialogs

FileDialog {
  id: idDialog
  title: "Dialog Example"
  currentFolder: StandardPaths.StandardLocations(StandardPaths.HomeLocation)[0]

  onAccepted: console.log(idDialog.selectedFile)
}

FileDialog의 경우 open할 경로를 지정해주면 거기서부터 파일을 선택할 수 있습니다.

기본적으로 제공되는 내장 경로는 다음을 참고해주세요.

https://doc.qt.io/qt-6/qstandardpaths.html#StandardLocation-enum

원하는 파일만 선택을 하려면 nameFilters property를 사용하시면 됩니다.

nameFilters: ["Image files (*.png)"]

Create FolderDialog

FolderDialog {
  id: idDialog
  title: "Dialog Example"
  currentFolder: StandardPaths.StandardLocations(StandardPaths.HomeLocation)[0]

  onAccepted: console.log(idDialog.selectedFolder)
}

FolderDialogFileDialog와 유사한 형태로 좀 더 쉽게 사용할 수 있습니다.

Wrap Up

이번 포스팅에서는 QML을 사용한 Dialog의 사용법을 알아보았습니다.

어려운 내용은 없으니 쉽게 사용 가능하실 거에요.