Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 如何实现用户定义的热键_Qt_Qml - Fatal编程技术网

Qt 如何实现用户定义的热键

Qt 如何实现用户定义的热键,qt,qml,Qt,Qml,在我的Qt5 QML应用程序中,我希望用户能够为操作选择热键。他们应该能够点击一个名为“设置热键”的按钮,然后他们下一步按下的任何键都会被记录下来并设置为操作的热键 如何在QML中实现这一点?这只是一个示例,但您可以实现类似的功能,使用项记录允许的快捷方式,并在快捷方式QML类型中设置该快捷方式 import QtQuick 2.12 import QtQuick.Window 2.12 import QtQuick.Controls 2.11 import QtQuick.Layouts 1.

在我的Qt5 QML应用程序中,我希望用户能够为操作选择热键。他们应该能够点击一个名为“设置热键”的按钮,然后他们下一步按下的任何键都会被记录下来并设置为操作的热键


如何在QML中实现这一点?

这只是一个示例,但您可以实现类似的功能,使用
记录允许的快捷方式,并在
快捷方式
QML类型中设置该快捷方式

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.11
import QtQuick.Layouts 1.11

Window {
    visible: true
    width: 640
    height: 480

    RowLayout {
        Button {
            text: "Set Shortcut"
            onClicked: myItem.focus = true;
        }
        TextEdit {
            id: myTextEdit
        }
    }

    Item {
        id: myItem
        focus: false
        Keys.onPressed: {
            console.log("recording shortcut")
            if ((event.key === Qt.Key_A) && (event.modifiers & Qt.ShiftModifier))
            {
                myShortCut.sequence = "Shift+A";
                focus = false;
            }
            if ((event.key === Qt.Key_X) && (event.modifiers & Qt.ControlModifier))
            {
                myShortCut.sequence = "Ctrl+X";
                focus = false;
            }
        }
    }

    Shortcut {
        id: myShortCut
        onActivated: myTextEdit.text = "shortcut " + sequence + " pressed!"
    }
}

你看了吗?您可以给它一个表示击键的字符串(例如“Ctrl-W”),并定义要执行的操作。此问题至少包含两个子问题,可以分别解决:捕获击键和应用快捷方式。请注意,查找教程超出StackOverflow的范围。@m7913d好的,我将编辑问题以不要求教程。Hanks@JarMan,我查看了快捷方式,但它没有描述如何使用用户指定的键序列设置它。@m7913d根据您的建议,我已在此处发布了第一个子问题,谢谢@Tarod。我有一个想法,可以减轻将键逐个映射到字符串的需要。好主意,@Mark干得好!:)