Qt 如何获取QML操作快捷方式的平台本机字符串?
我有一个快捷方式:Qt 如何获取QML操作快捷方式的平台本机字符串?,qt,qml,qtquick2,qtquickcontrols2,Qt,Qml,Qtquick2,Qtquickcontrols2,我有一个快捷方式: Action { id: myAction shortcut: "Ctrl+D" } 如何获取快捷方式的平台本机表示形式 以下是我已经尝试过的: 立即使用快捷方式,就像 ToolTip.text: myAction.shortcut 但是,这将返回定义的快捷方式(例如,“Ctrl+D”),而不是平台本机表示(例如,)⌘D“)。如果使用StandardKey,它也会返回不正确的结果,因为它给出的是StandardKey的整数值,而不是相应的键组合 使用na
Action {
id: myAction
shortcut: "Ctrl+D"
}
如何获取快捷方式的平台本机表示形式
以下是我已经尝试过的:
- 立即使用快捷方式,就像
但是,这将返回定义的快捷方式(例如,ToolTip.text: myAction.shortcut
),而不是平台本机表示(例如,“Ctrl+D”
)。如果使用)⌘D“
,它也会返回不正确的结果,因为它给出的是StandardKey
的整数值,而不是相应的键组合StandardKey
- 使用
属性,如nativeText
但这样的财产并不存在ToolTip.text: myAction.shortcut.nativeText
快捷方式
项目这将通过其
nativeText
属性为我们提供平台本机表示操作
并添加自定义属性以保存快捷方式这是必要的,因为
操作的快捷方式属性将始终返回一个字符串,当使用标准键时,快捷方式项将错误地解释该字符串。快捷方式项将整数值解释为快捷方式,因此您将得到一个“3”
而不是“Ctrl+O”
)
操作
快捷方式和快捷方式
序列import QtQuick 2.7
import QtQuick.Controls 2.4
Action {
/* Custom property */
property var keySequence
shortcut: keySequence
}
ToolTipButton.qml
import QtQuick 2.7
import QtQuick.Controls 2.4
Button {
/* Disabled Shortcut */
Shortcut {
id: dummyShortcut
enabled: false
sequence: action.keySequence
}
hoverEnabled: true
ToolTip.visible: hovered
ToolTip.delay: 1000
ToolTip.timeout: 5000
ToolTip.text: dummyShortcut.nativeText
}
这样使用:
main.qml
import QtQuick 2.7
import QtQuick.Controls 2.4
ApplicationWindow {
visible: true
CustomAction {
id: myAction
keySequence: StandardKey.Open
}
ToolTipButton {
id: myButton
action: myAction
text: "Trigger my action"
}
}