• 2676阅读
  • 3回复

[讨论]qml手动发送键盘事件 [复制链接]

上一主题 下一主题
离线keris_huang
 

只看楼主 正序阅读 楼主  发表于: 2019-12-02
qml中,如何做到可以像qwidget中的sendEvent那样,手动的发送键盘事件给某个控件,有没有大佬遇到过,或者解决过此种问题,请指教!
离线linker

只看该作者 3楼 发表于: 2019-12-02
做土豆长大的孩纸
离线keris_huang

只看该作者 2楼 发表于: 2019-12-02
回 yhgaven 的帖子
yhgaven:比如键盘输入密码,工号等#号结束
Rectangle {
    id: mainPage
    width: 1280
    height: 768
....... (2019-12-02 11:37) 

大佬,你这个逻辑是监听用户的输入键盘事件,可能我描述的不够清楚!我其实是想在qml中,能实现像QWidget中的sendEvent函数的功能,比如:
qwidget是这样 QKeyEvent myEvent(QEvent::KeyPress,Qt::Key_Up(键盘事件,不用用户手动按,自动就产生的一个键盘事件),Qt::NoModifier);  
qApp->sendEvent(ui->MyWidget,&myEvent);

我的诉求:在qml文件中,定义一个键盘事件,然后,在代码中,手动发送这个事件给某个控件


  
离线yhgaven

只看该作者 1楼 发表于: 2019-12-02
比如键盘输入密码,工号等#号结束
Rectangle {
    id: mainPage
    width: 1280
    height: 768

    property string jobNumber;
    property int listCount: 0

    Component.onCompleted: {

    }

    focus: true
    Keys.onPressed: {
       event.accepted = true;//设置成了事件已接收,防止向上层传递

       var isNumber = event.key >= 0x30 && event.key<= 0x39;
       if (isNumber)
       {
           var num = event.key - 48;
           jobNumber += num;
       }

       if(event.key === Qt.Key_NumberSign)
       {
           console.log("jobNumber=111=="+jobNumber)
           //QmlCache.setJobNumber(jobNumber);
           jobNumber = "";
       }
    }
}
快速回复
限100 字节
 
上一个 下一个