首页 > 代码库 > QT QML Keys 处理注意事项

QT QML Keys 处理注意事项

今天在学习 QT QML 最基本的东东,在下面的代码中响应按键处理无效。代码如下:

 1 import QtQuick 2.2 2 import QtQuick.Window 2.1 3 import QtQuick.Controls 1.2 4  5 Window { 6     visible: true 7     width: 360 8     height: 360 9 10     MouseArea {11         anchors.fill: parent12         onClicked: {13             Qt.quit();14         }15     }16 17     Text {18         id: helloWorldTxt;19         text: qsTr("Hello World")20         anchors.centerIn: parent21     }22 23     Button {24         id: quitBtn;25         text: "Quit";26         anchors.horizontalCenter: helloWorldTxt.horizontalCenter;27         anchors.top: helloWorldTxt.bottom;28         anchors.bottomMargin: 8;29         onClicked: {30             console.log("click quit button.");31             Qt.quit();      // 如果没有此行,则点击此按键不会退出.32         }33     }34 35     // focus: true;            // 错误: Invalid property name36     Keys.enabled: true;37     Keys.onEscapePressed: {38         Qt.quit();  // 没有功能: 不退出, why?39     }40     Keys.onPressed: {41         switch(event.key) {42         case Qt.Key_0:43             console.log("click key 0.");        // 一样没有 LOG 输出44             break;45         default:46             console.log("click key other.");47             break;48         }49     }50 }

将 Keys 的处理放在 Item 中、并且增加: focus: true; 后,功能正常。

代码如下(省略部分重复的代码):

 1 import QtQuick 2.2 2 import QtQuick.Window 2.1 3 import QtQuick.Controls 1.2 4  5 Window { 6     ...... 7  8     Item { 9         focus: true;            // 此句是必须的, 否则没有功能10         Keys.enabled: true;11         Keys.onEscapePressed: {12             Qt.quit();  // 功能正常13         }14         Keys.onPressed: {15             switch(event.key) {16             case Qt.Key_0:17                 console.log("click key 0.");        // 有 LOG 输出18                 break;19             default:20                 console.log("click key other.");21                 break;22             }23         }24     }25 }

 

QT QML Keys 处理注意事项