개인적으로는 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 (7) | 2022.11.04 |
[PyQt6] Getting Started with QtQuick (0) | 2022.11.03 |
[PyQt6] Getting Started with QtWidgets (0) | 2022.11.02 |
댓글