美文网首页
24--Qt Quick事件处理---鼠标-会动的文本实例

24--Qt Quick事件处理---鼠标-会动的文本实例

作者: lvyweb | 来源:发表于2019-06-14 13:43 被阅读0次

    标签(空格分隔): Qt


    import QtQuick 2.0
    import QtQuick.Controls 2.2
    
    Rectangle {
        width: 320;
        height: 480;
        color: "grey";
        focus: true;
        Keys.enabled: true;
        Keys.onEscapePressed: {
            Qt.quit();
        }
        Keys.forwardTo: [moveText,likeQt];//转发给id为moveText的Text对象和id为likeQt的Checkbox对象,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{
            id: likeQt;
            text: "Like Qt Quick";
            anchors.left: parent.left;
            anchors.leftMargin: 10;
            anchors.bottom: parent.bottom;
            anchors.bottomMargin: 10;
            z:1;
        }
    }
    
    
    

    这个示例通过上、下、左、右4个按键移动一个文本串,按空格键选中复选框,按Esc键退出应用。

    Key对象与信号处理器
    Keys对象是Qt Quick 提供的,专门提供item处理按键事件的对象。它定义了很多针对特定按键的信号,比如returnPressed、escapePressed、downPressed、digit0Pressed、backPressed等;它还定义了更为普通的pressed和released信号。一般地,你可以使用这两个信号来处理大部分按键,它们有一个名字是event、类型是KeyEvent的参数,包含了按键的详细信息。

    KeysEvent代表一个按键事件,如果一个按键被处理,event.accepted应该被设置成true,以免它被继续传递,要是你不设置它,那它有可能会继续传递给其他的Item,出现一些奇怪的问题。

    Keys有三个属性。

    enabled属性控制是否处理按键。

    forwardTo属性是列表类型,它表示传递按键事件给列表内的对象,如果某个对象accept了某个按键,那位列其后的对象就不会收到该按键事件。

    priority属性允许你设置Keys附加属性的优先级,有两种:在Item之前处理按键(默认行为)、在Item之后处理按键。

    Qt Quick提供的一些元素本身会处理按键,比如示例中的CheckBox,它响应空格键来选中或取消选中复选框,而我们不需要给它附加Keys对象来再次处理按键事件。

    相关文章

      网友评论

          本文标题:24--Qt Quick事件处理---鼠标-会动的文本实例

          本文链接:https://www.haomeiwen.com/subject/kngufctx.html