如何在qml(qt)中激活键盘

时间:2017-09-08 14:30:38

标签: qt qml

我在Button.qml文件中定义了一个Button对象,另一个qml文件Page.qml使用了Button.qml中定义的Button对象。如何激活键盘输入,以便我可以使用键盘导航Page.qml中的按钮。例如输入密钥,空格键等。

我尝试使用"焦点:true"," Keys.onPressed:{}"和" onVisibleChanged:if(visible)sendBbkButton.forceActiveFocus()"在Button.qml和Page.qml中都有。但它不会激活Page.qml中两个按钮的焦点和键盘。

谢谢!

Page.qml:

Rectangle {
    id: bp

    // some code

     Button {
        id: aButton

        text: qsTr("Abort test1")
        tooltipText: qsTr("test1")
        onClicked: {
            // some coding
        }
        anchors { right: parent.left; bottom: parent.bottom; margins: 10 }
        height: contentHeight + 20
        width: contentWidth + 40
    }

    Button {
        id: bButton

        text: qsTr("Abort test2")
        tooltipText: qsTr("test2")
        onClicked: {
            // some coding
        }
        anchors { right: aButton.left; bottom: parent.bottom; margins: 10 }
        height: contentHeight + 20
        width: contentWidth + 40
    }

    // some code
}

Button.qml:

BorderImage {
    id: button

    property alias text: label.text
    property alias contentWidth: label.contentWidth
    property alias contentHeight: label.contentHeight
    property alias buttonColor: shade.color
    property string tooltipText: ""

    signal clicked()

    source: Style.buttonBorderImage
    border { left: 10; top: 15; right: 10; bottom: 10 }
    Highlight { }
    width: Math.max( sourceSize.width, label.contentWidth * 1.2)

    Rectangle {
        id: shade
        anchors.fill: parent
        radius: 10
    }

    Rectangle {
        id: focusBorder
        color: "transparent"
        border.color: button.activeFocus ? Style.iRobotGreen : "transparent"
        anchors { fill: parent; margins: -1 }
        radius: 10
    }

    Layout.preferredWidth: Math.max( label.implicitWidth + button.border.left
                                     + button.border.right,
                                     button.implicitWidth )

    Text {
        id: label
        anchors.centerIn: parent
        font: Style.refFont1.font
    }

    MouseArea {
        id: mouse
        anchors.fill: parent
        enabled: true
        onClicked: button.clicked()
        hoverEnabled: button.tooltipText.length > 0
        onEntered: {
            if (button.tooltipText.length > 0)
                tooltip.show(mouseX + 16, mouseY + 16)
        }
        onExited: {
            tooltip.hide()
        }
    }

    ToolTip {
        id: tooltip
        enabled: true
        text: button.tooltipText
    }
}

0 个答案:

没有答案