键盘数据监控:

同样的,键盘的检测和鼠标的情形很类似,都是以QWidget为基类的工程

Step1:在UI设计中添加该模块需要使用的相关组件,如下所示:

 <width>141</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>Direction Contol:</string>
</property>
</widget>
<widget class="QGraphicsView" name="graphicsView">
<property name="geometry">
<rect>
<x>200</x>
<y>50</y>
<width>181</width>
<height>151</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_7">
<property name="geometry">
<rect>
<x>250</x>
<y>200</y>
<width>91</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>Move Regon</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_3">
<property name="geometry">
<rect>
<x>240</x>
<y>100</y>
<width>16</width>
<height>16</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>8</pointsize>
<italic>false</italic>
</font>
</property>
<property name="text">
<string>O</string>
</property>
</widget>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>
<connections/>
</ui>

从ui设计当中,我们能明确的额看到有两个按键,若干个Lable,一个Frame等等。

Step2:我们在widget.cpp文件中添加我们对应事件的执行函数:

  func1:keyPressEvent   func2:keyPressEvent

void Widget::keyPressEvent(QKeyEvent *e)
{
int x, y, dis;
x = ui->pushButton_3->x();
y = ui->pushButton_3->y();
switch(e->key())
{
case Qt::Key_W : dis = y>40 ? 10:0; ui->pushButton_3->move(x,y-dis); break;
case Qt::Key_S : dis = y<190 ? 10:0; ui->pushButton_3->move(x,y+dis); break;
case Qt::Key_A : dis = x>190 ? 10:0; ui->pushButton_3->move(x-dis,y); break;
case Qt::Key_D : dis = x<370 ? 10:0; ui->pushButton_3->move(x+dis,y); break;
default : break;
}
ui->pushButton->setText(tr("%1,%2").arg(x).arg(y));
} void Widget::keyReleaseEvent(QKeyEvent *e)
{
ui->pushButton_2->setText(tr("%1").arg(e->key()));
}

同样的在widget.h头文件中对这两个函数进行声明:

protected:
void keyPressEvent(QKeyEvent *);
void keyReleaseEvent(QKeyEvent *);

以上的两个基本步骤就完成了整个工程的建立,接下来就是编译并运行了!(Demo的使用方法就是键盘上的WSAD对应了前后左右的方向,Frame上的那个圆圈会随着键盘的前后左右而运动)

5、Qt Project之键盘数据监控的更多相关文章

  1. 2、Qt Project之鼠标事件监控

    鼠标事件监控: 对于鼠标时间监控的相关操作,我们在简历工程的时候需要选择的是QWidget基类,不选择QMainWindow基类,如下所示: Base class:QWidget Step1:我们首先 ...

  2. KnockoutJS 3.X API 第二章 数据监控(1)视图模型与监控

    数据监控 KO的三个内置核心功能: 监控(Observable)和依赖性跟踪(dependency tracking) 声明绑定(Declarative bindings) 模板(Templating ...

  3. 详解 Qt 线程间共享数据(用信号槽方式)

    使用共享内存.即使用一个两个线程都能够共享的变量(如全局变量),这样两个线程都能够访问和修改该变量,从而达到共享数据的目的. Qt 线程间共享数据是本文介绍的内容,多的不说,先来啃内容.Qt线程间共享 ...

  4. 在CentOS下面编译WizNote Qt Project

    编译环境 CentOS 64位 Desktop 版本:6.5 编译前的准备: CentOS的用户默认没有root权限,如果当前用户没有权限root,则可以在终端里面执行下面的命令: su root s ...

  5. Qt Project的持续集成方案

    作者:齐亮链接:http://www.zhihu.com/question/24314354/answer/27547787来源:知乎著作权归作者所有,转载请联系作者获得授权. PETER HARTM ...

  6. Qt WebKit and HTML5 geolocation | Qt Project forums | Qt Project

    Qt WebKit and HTML5 geolocation | Qt Project forums | Qt Project Qt WebKit and HTML5 geolocation   I ...

  7. DOM Traversal Example | Documentation | Qt Project

    DOM Traversal Example | Documentation | Qt Project DOM Traversal Example

  8. USB键盘数据解析

    以前用过的一个嵌入式设备使用USB键盘作为输入.当时还研究了一下USB协议,现在都快忘得差不多了.这里整理一下当时找到的关于USB键盘数据方面的资料. 主机与USB键盘建立连接后,定时从键盘获取8字节 ...

  9. 在SpringBoot使用Druid进行数据监控

    前言 之前在构建项目初始设计的时候在选择数据库连接的时候就看到Druid有这样的强大的功能.数据监控.对于一个项目来说,数据监控特别重要,之前使用对于数据库的监控都是通过mysql的日志等系统来完成的 ...

随机推荐

  1. Jquery简单使用

    展示:$("#id").show(); 隐藏:$("#id").hide();

  2. js调用ajax案例2,使用ok

    XMLHttpRequest 是 AJAX 的基础. XMLHttpRequest 对象所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject) ...

  3. Confluence 6 € 欧元字符集不能正常显示

    € (euro) 标记 是一个 3 字节字符,在 (UTF-8)中这个字符被表示为 0xE2, 0x82, 0xAC. 有时候,你的系统中没有设置所有的地方为相同的字符集的时候(Confluence, ...

  4. Confluence 6 配置 workbox 通知

    你可以在你的 Confluence workbox 中查看和管理应用内的通知和任务.更多的,你可以在 Confluence workbox 中从接收到从 JIRA 和其他 Confluence 服务器 ...

  5. 新版Go2Shell 安装详解

    Go2Shell 下载地址 https://zipzapmac.com/Go2Shell 安装说明 1,首先下载好程序,然后运行到下面界面 2 然后将程序拖到下面位置 3,然后执行install Go ...

  6. bat如何实现图片与名字匹配重命名

    背景:有一批图片按顺序截取,需要按照规定的名称进行重名命. 问题:用批处理怎么实现呢?(公司电脑手动重名时,卡的不要不要的) No1:解决:将规定的名称放入criterion.txt中,将批处理Ren ...

  7. PL\SQL 随学笔记

    一.在PL\SQL语句块begin...end;中,不能直接使用select,必须与into结合查询. 例如: declare aa:=22; id2 integer; begin select * ...

  8. 伪Ap接入点

    1.创建一个伪造的Ap接入点,必须购买一个无线网卡的设备,接受功率在300Mbps ,低于这个传输速率的值,效果很差,都达到用户可以连接验证的效果.其芯片必须支持kali linux 内核系统. 2. ...

  9. HTML&javaSkcript&CSS&jQuery&ajax(四)

    一.HTML创建响应设计 Responsive Web Design 可以改变尺寸传递网页,对于平板和移动设备是必须的 1.<!DOCTYPE html><html lang=&qu ...

  10. Git使用五:回到过去

    reset:将仓库里面的内容恢复回暂存区,类似于从仓库里检出文件到暂存区checkout:将暂存区的文件恢复回工作区,即,把暂存区的文件检出到工作区 下面是之前三次提交的内容 三个区域的文件状态: 执 ...