Tôi muốn để xử lý hai sự kiện quan trọng Ctrl
+ Tab
và Ctrl
+ Shift
+ Tab
để chuyển đổi giữa các tab trong ứng dụng của tôi ("chuyển tiếp" và "lạc hậu" tương ứng). Tuy nhiên, điều này dường như không hoạt động như mong đợi.Xử lý các sự kiện phím Ctrl + Tab và Ctrl + Shift + Tab
Đây là mã của tôi hiện tại (ví dụ tối thiểu):
import QtQuick 1.1
Item {
width: 100
height: 100
focus: true
Keys.onPressed: {
if(event.modifiers & Qt.ControlModifier) {
if(event.key === Qt.Key_Tab) {
if(event.modifiers & Qt.ShiftModifier)
console.log('backward')
else
console.log('forward')
}
}
}
}
Tôi chạy đoạn mã này với qmlviewer
(Qt phiên bản 4.8.2)
Output khi nhấn Ctrl
+ Tab
:
forward
forward
Đầu ra khi nhấn Ctrl
+ Shift
+ Tab
:
none
Vì vậy, tôi thấy hai lỗi: Các cựu dãy phím được xử lý gấp đôi trong khi người kia không phải ở tất cả.
- CHỈNH SỬA: Lý do khác không xử lý được giải quyết, xem nhận xét.
Tại sao điều này xảy ra và làm cách nào tôi có thể giải quyết vấn đề này?
Lưu ý: Tôi đã sử dụng Thành phần Qt cho Máy tính để bàn trong ứng dụng của mình, vì vậy, nếu bạn biết một giải pháp yêu cầu mô-đun này thì sẽ OK.
Ok tôi đoán vấn đề là Qt đã ánh xạ 'Shift' +' Tab' thành 'Qt :: Key_Backtab' thay vì' Qt :: Key_Tab'. Điều này giải quyết vấn đề thứ hai, nhưng không phải là vấn đề mà các sự kiện quan trọng được nhận * hai lần *. – leemes