qt Keys.onPressed:不回答键盘问题

时间:2018-04-19 13:38:04

标签: qt qml

在qml中使用Keys.onPressed时出现了一个非常奇怪的问题,整个编译和执行都没有错误,但是在按下键盘之后它没有执行该功能,代码在下面。

我试图在Keys案例中定义与mousearea案例中相同的功能。但只有Clicked mousearea可以工作,所以这不是函数的问题。我尝试使用Keys.onPressed的另一个项目,所以既不是软件的问题。我的键盘运行良好,所以我可以在这里提出问题。我根本不知道。

以下是代码:

import QtQuick 2.5
import QtQuick.Window 2.2

Window {
visible: true
width: 360
height: 560
title: qsTr("2048")

MainForm {
    id: root
    anchors.fill: parent

    property int eN
    property int eM


    function vidergrille() {
        for(eN = 0; eN < 4; eN++) {
            for(eM = 0; eM < 4; eM++) {
                egrille.eNums.itemAt(4*eN+eM).eNum = "";
                egrille.eNums.itemAt(4*eN+eM).color = "white";
            }
        }
    }
    function showgrille() {
        vidergrille();
        for(eN = 0; eN < 4; eN++) {
            for(eM = 0; eM < 4; eM++) {
                if(vueGrille.lireChiffre(eN,eM)) {
                    egrille.eNums.itemAt(4*eN+eM).eNum = vueGrille.lireChiffre(eN,eM);
                    egrille.eNums.itemAt(4*eN+eM).color = vueGrille.color(eN,eM);
                }
            }
        }
    }

    Keys.onPressed: {
      switch (event.key) {
        case Qt.Key_Up:
            vueGrille.commencer();
            root.showgrille();
          break;
        case Qt.Key_Down:
            vueGrille.mouveBas();
            root.showgrille();
          break;
        case Qt.Key_Left:
            vueGrille.mouveGauche();
            root.showgrille()
          break;
        case Qt.Key_Right:
            vueGrille.mouveDroite();
            root.showgrille()
          break;
        default:
            break;
      }
    }

    start {
        onClicked:vueGrille.commencer(),root.showgrille();
    }

    back {
        onClicked:vueGrille.mouveHaut(),root.showgrille();
    }
}
}

1 个答案:

答案 0 :(得分:1)

尝试在您的MainForm中添加focus: true