如何获取QML Action快捷方式的平台本机字符串?

时间:2019-05-07 07:45:31

标签: qt qml qtquick2 qtquickcontrols2

我有一个带有快捷方式的Qt Quick Controls 2 Action

Action {
    id: myAction
    shortcut: "Ctrl+D"
}

如何获取快捷方式的平台本机表示形式?

这是我已经尝试过的:

  • 像这样立即使用快捷方式

    ToolTip.text: myAction.shortcut
    

    但是,这将返回定义的快捷方式(例如"Ctrl+D"),而不是平台本机表示形式(例如"⌘D")。如果使用StandardKey,它也会返回错误的结果,因为它给出StandardKey的整数值,而不是相应的组合键。

  • 使用nativeText属性,例如

    ToolTip.text: myAction.shortcut.nativeText
    

    但是这样的属性不存在。

1 个答案:

答案 0 :(得分:1)

似乎没有直接的方法来获得这个。

一种解决方法是:

  1. 创建禁用的b'<!DOCTYPE html><html lang="en"><head><script>window.gitHash=\'bddfa72\';</script><script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({\'gtm.start\': new Date().getTime(),event:\'gtm.js\'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!=\'dataLayer\'?\'&l=\'+l:\'\';j.async=true;j.src=\'https://www.googletagmanager.com/gtm.js?id=\'+i+dl;f.parentNode.insertBefore(j,f);})(window,document,\'script\',\'dataLayer\',\'GTM-N7HL5NW\');</script><title>Account</title><meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="stylesheet" href="/public/core.min.css?_=bddfa72" /><link rel="stylesheet" href="/public/pages/docs.min.css?_=bddfa72" /><link rel="shortcut icon" href="/public/media/img/favicon.ico?_=bddfa72" /></head><body><div id="app-mount"></div><script src="/public/core.min.js?_=bddfa72"></script><script src="/public/pages/docs.min.js?_=bddfa72"></script></body></html>' 项目
    这将通过其Shortcut属性为我们提供平台本地表示。
  2. nativeText派生并添加自定义属性以保存快捷方式
    这是必要的,因为Action的{​​{1}}属性将始终返回一个字符串,当使用{{1}时,该字符串将被shortcut项目错误地解释。 }(Action项目会将整数值解释为快捷方式,因此您得到的是Shortcut而不是StandardKey)。
  3. 将自定义属性绑定到Shortcut快捷方式和"3"序列

所以在代码中:

CustomAction.qml

"Ctrl+O"

ToolTipButton.qml

Action

像这样使用:

main.qml

Shortcut