1)实验平台:正点原子阿尔法Linux开发板
2) 章节摘自【正点原子】《I.MX6U 嵌入式Qt开发指南》
3)购买链接:https://detail.tmall.com/item.htm?id=609033604451
4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/arm-linux/zdyz-i.mx6ull.html
5)正点原子官方B站:https://space.bilibili.com/394620890
6)正点原子阿尔法Linux交流群:1027879335
第二十一章 USER-KEY
本章是按键实验,介绍如何在Qt应用上使用正点原子嵌入式I.MX6ULL Linux开发板上的按键。
21.1 资源简介在正点原子的I.MX6U开发板,ALPHA和MINI Linux开发板板载资源上有一个按键。如下图原理图(下图为ALPHA开发板的KEY0按键原理图)。 21.2 应用实例想要监测这个KEY0,首先正点原子的出厂内核已经默认将这个按键注册成了gpio-keys类型设备,键值为114也就是对应Qt的Key_VolumeDown键值。也就是说我们可以直接当这个按键是我们普通键盘的音量减键使用(注意键值为114的按键比较特殊,并不能直接在我们普通的键盘上找到,有些笔记本电脑使用FN + F6等组合直接代替了音量减键)。 我们在本例中使用Key_Down(键盘方向键↓)在Windows/Ubuntu上测试,在开发板上还是使用KEY0按键测试。 在开发板监测这个KEY0有很多方法。比如使用C语言开一个线程监测这个按键,或者按本例重写键盘事件来监测KEY0按键按下或者松开。 项目简介:监测KEY0按键的按下和松开。使用一个标签文本,通过按键按下来改变标签文本的文字属性。 例07_key,监测KEY0(难度简单)。项目路径为Qt/3/07_key。 在源文件“mainwindow.h”的代码如下。 - /******************************************************************
- Copyright © Deng Zhimao Co., Ltd. 1990-2021. All rights reserved.
- * @projectName 07_key
- * @brief mainwindow.h
- * [url=home.php?mod=space&uid=90321]@Author[/url] Deng Zhimao
- * [url=home.php?mod=space&uid=55957]@EMAIL[/url] 1252699831@qq.com
- * [url=home.php?mod=space&uid=28414]@net[/url] www.openedv.com
- * @date 2021-04-19
- *******************************************************************/
- 1 #ifndef MAINWINDOW_H
- 2 #define MAINWINDOW_H
- 3
- 4 #include <QMainWindow>
- 5 #include <QKeyEvent>
- 6 #include <QLabel>
- 7 #include <QDebug>
- 8 #include <QEvent>
- 9
- 10 class MainWindow : public QMainWindow
- 11 {
- 12 Q_OBJECT
- 13
- 14 public:
- 15 MainWindow(QWidget *parent = nullptr);
- 16 ~MainWindow();
- 17
- 18 private:
- 19 /* 标签文本 */
- 20 QLabel *label;
- 21
- 22 /* 重写按键事件 */
- 23 void keyPressEvent(QKeyEvent *event);
- 24 void keyReleaseEvent(QKeyEvent *event);
- 25 };
- 26
- 27 #endif // MAINWINDOW_H
复制代码
第23~24行,声明需要重写的按键事件类型。分别是按下事件和松开事件。通过重写这两个事件可以监测到键盘或KEY0按下的状态。 在源文件“mainwindow.cpp”的代码如下。 第9行~23行,界面初始化设置,在嵌入式里,根据实际的屏的大小,设置全屏显示。按钮居中显示。 第46~83行,重写按下事件和松开事件,通过判断event->key()等哪个按键,就可以知道是哪个按键按下或者松开了。并设置了标签文本的属性。
21.3 程序运行效果Ubuntu/Windows上当焦点聚集到此应用程序窗口时,按下方向键“↓”,标签文本的值会改变为“Down按键按下”,当松开方向键“↓”,标签的文本值会改变为默认状态“Down按键松开”。 同理在开发板上,按下KEY0键则会打印“VolumeDown按键按下”,松开KEY0键会打印“VolumeDown按键松开”。
|