本次學習了如何處理qml中的按鍵訊息,其實也很簡單,主要就是有個訊息傳遞的問題需要處理。
如果不向下傳遞訊息,後面則無法接收到按鍵訊息了。
下面就是具體的例子:
import QtQuick 2.2import QtQuick.Controls 1.2Rectangle{ //視窗的寬度 width: 320; //視窗的高度 height: 480; //視窗的顏色 color:"gray"; focus: true; //是否處理按鍵 Keys.enabled: true; //處理按鍵的ESC訊息 Keys.onEscapePressed: { Qt.quit(); } //訊息傳遞到 moveText,likeQt處理。 其中需要注意的是,moveText處理的按鍵訊息,likeQt就收不到了 Keys.forwardTo: [moveText , likeQt]; Text{ id:moveText; x:20 ; y:20; width: 200; height: 30; text:"Moving Text"; color:"blue"; //設定字型,大小 font { bold :true; pixelSize :24;} //是否處理按鍵 Keys.enabled: true; //處理按鍵訊息 Keys.onPressed: { switch(event.key){ case Qt.Key_Left: x -= 10; break; case Qt.Key_Right: x+= 10; break; case Qt.Key_Down: y += 10; break; case Qt.Key_Up: y -= 10; break; default: return; } //繼續傳遞按鍵,讓後面可以處理按鍵訊息 event.accepted = true; } } CheckBox{ //為啥按下空格就會自動選中或者取消呢。 是因為qt quick中已經實現了處理按鍵 id:likeQt; text:"Like Qt Quick"; anchors.left: parent.left; anchors.leftMargin: 10; anchors.bottom: parent.bottom; anchors.bottomMargin: 10; z:1; }}
注釋都寫好啦,就不做多的解釋啦~