zoukankan      html  css  js  c++  java
  • 【2017-06-06】Qt中的键盘事件:QKeyEvent及相关处理函数

    QKeyEvent及其相关的处理函数,比如QKeyPressEvent、QKeyReleaseEvent()等在QtGui编程中非常常用,尤其是需要借助标准键盘的编码来实现一些自定义功能的时候。

    这算是QtGui编程中非常基础的东西,但如果事先没仔细了解手册中关于这一部分的介绍的话,还是有不少坑的。

    为什么想起来写这个呢?之前的一个项目用了使用标准键盘芯片做的面板,但有一部分按键的key()是重复的,以前在Linux-Arm中底层编码传递上的键值在抛出QKeyEvent事件时做了处理,所以没有重复键值,因此这次是在Windows系统下编程,就有点想当然了,当发现键值重复时总是认为键盘硬件可能出了问题。

    直到专门做了一个键值检测程序,在Win7上运行发现使用key()时,比如左右shift键的键值是一样的,但是看了下手册,它们的nativescancode()却是不一样的,于是就采用nativescancode()来区分不同的按键,果然是可以的。

    这也说明,有空要多看下手册,多做点实例程序。

    问题一:

    使用QKeyEvent的e->key()来获取键值

    void Widget::keyPressEvent(QKeyEvent *e)
    {
        int key = e->key();
        qDebug()<<key;
    }

    但键盘上左右功能键,获取的键码是一样的,比如左右shift键、左右ctrl键以及左右alt键,编码一样,如何区分?

    解决:

    如果是在Windows/Linux系统中,请使用QKeyEvent::nativescancode()来区分键值,这样就是唯一的;

    但是这个函数在MacOS下不能用。

  • 相关阅读:
    jquery 里面对数组去重操作-unique
    jquery序列化form表单
    [转载]说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
    AMD和CMD的区别
    CSS中!important的使用
    HTML的map-area的使用
    CSS Sprite 精灵图
    UA 用户代理
    IE haslayout
    心情随笔
  • 原文地址:https://www.cnblogs.com/dengwenwu/p/6954200.html
Copyright © 2011-2022 走看看