본문 바로가기
Python

[PyQt6] Shortcut in QML

by llHoYall 2022. 11. 5.

개인적으로는 desktop app 만들 때 자주 쓰는 기능 중 하나입니다.

QML에서도 간단하게 사용할 수 있어요.

쉬운 예제를 통해 살펴보겠습니다.

Application 작성에 대해서는 이전 포스팅을 참고해주세요.

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

QML에서 단축키 사용하기

// main.qml

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

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

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

  Item {
    id: idItem
    property int count
  }

  Shortcut {
    sequence: "Ctrl+A"
    onActivated: idItem.count++
  }

  Shortcut {
    sequence: "Ctrl+D"
    onActivated: idItem.count--
  }

  Label {
    id: idLabel
    anchors.centerIn: parent
    text: idItem.count
    font.pixelSize: 24
  }
}

Item component를 하나 만들어 int type의 count라는 property를 하나 만들어 주었습니다.

다음으로, 이 값을 표시해주기 위해 Label을 하나 두었어요.

Ctrl+A를 누르면 count가 증가하고, Ctrl+D를 누르면 감소하도록 하였습니다.

실행시켜보면 잘 동작하는 것을 확인하실 수 있습니다.

Standard Key를 사용한 단축키 활용

단축키는 시스템에 미리 정의된 키 sequence를 사용하여 만들수도 있습니다.

시스템 내장 단축키를 사용하므로 크로스 플랫폼 application을 만들 때 유용하죠.

// main.qml

Shortcut {
  sequence: StandardKey.MoveToPreviousLine
  onActivated: idItem.count++
}

Shortcut {
  sequence: StandardKey.MoveToNextLine
  onActivated: idItem.count--
}

이것은 방향키를 위로 하면 증가, 아래로 하면 감소를 나타냅니다.

자세한 내용은 다음 공식 문서를 활용하시면 됩니다.

https://doc.qt.io/qt-6/qkeysequence.html#StandardKey-enum

다중 키 지정

하나의 동작에 여러가지 단축키를 할당할 수 있습니다.

// main.qml

Shortcut {
  sequences: [StandardKey.MoveToPreviousLine, "Ctrl+A"]
  onActivated: idItem.count++
}

Shortcut {
  sequences: [StandardKey.MoveToNextLine, "Ctrl+D"]
  onActivated: idItem.count--
}

sequence property가 아니라 sequences property로 바뀐 것에 주의 하세요.

지정하고 싶은 키들을 배열 형태로 나열해주면 됩니다.

키 캡쳐

특정 키가 눌렸거나 떼졌을 때 등을 직접 처리할 수도 있습니다.

// main.qml

Item {
  id: idItem
  focus: true

  property int count

  Keys.onPressed: (evt) => {
    console.log(evt.key)
  }
}

키 입력을 받기 위해 focus를 잡은 후, 눌렸을 때의 처리를 위해 Keys의 onPressed() method를 사용하여 눌린 키의 값을 찍도록 하였습니다.

우리가 지정한 단축키들은 해당 동작을 하게 되고, 나머지 키들은 모두 이 곳에서 잡힙니다.

이 정도면 응용을 하기에 충분히 간단하면서 필요한 지식을 전달 드린 것 같네요.

보다 자세한 내용은 공식 문서를 참고해주세요.

제가 알려드린 사용 방법을 토대로 다른 method들을 적용해보시면 될 것 같아요.

https://doc.qt.io/qt-6/qml-qtquick-keys.html

Conclusion

이번 포스팅을 통해 QML에서 단축키를 지정하는 방법을 배웠습니다.

Application 만드실 때, 참고하셔서 활용해 보세요. ^^

'Python' 카테고리의 다른 글

[PyQt6] QML에서 Tool Bar 만들기  (0) 2022.11.06
[PyQt6] Action in QML  (0) 2022.11.06
[PyQt6] Data 전달 with QML  (0) 2022.11.04
[PyQt6] Getting Started with QtQuick  (0) 2022.11.03
[PyQt6] Getting Started with QtWidgets  (0) 2022.11.02

댓글