在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();
}
}
}
答案 0 :(得分:1)
尝试在您的MainForm中添加focus: true