对于开发板上的QT程序来说需要接收键盘的按键,本项目中使用的是自定义键盘。所以对于QT来说需要识别自定义键盘的上的按键。
大概流程图如下:

step-1:
在 qt-everywhere-opensource-src-4.6.3/src/gui/embedded 下增加如下两个文件
---------------------------------
qkbd_my_qws.h
+++++++++++++++++
#ifndef QKBD_MY_QWS_H
#define QKBD_MY_QWS_H
#include <QtGui/qkbd_qws.h>
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
QT_MODULE(Gui)
#ifndef QT_NO_QWS_KEYBOARD
#ifndef QT_NO_QWS_KBD_MY
class QWSMYKbPrivate;
class QWSMYKeyboardHandler : public QWSKeyboardHandler
{
public:
QWSMYKeyboardHandler(const QString &);
virtual ~QWSMYKeyboardHandler();
private:
QWSMYKbPrivate *d;
};
#endif // QT_NO_QWS_KBD_MY
#endif // QT_NO_QWS_KEYBOARD
QT_END_NAMESPACE
QT_END_HEADER
#endif // QKBD_MY_QWS_H
---------------------------------
--------------------------------
qkbd_my_qws.cpp
++++++++++++++
#include "qkbd_my_qws.h"
#ifndef QT_NO_QWS_KBD_MY
#include <QSocketNotifier>
#include <QStringList>
#include <QString>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <termios.h>
#include <unistd.h>
#include <errno.h>
#include <private/qcore_unix_p.h>
#include <qsocketnotifier.h>
#include <linux/input.h>
QT_BEGIN_NAMESPACE
class QWSMYKbPrivate : public QObject
{
Q_OBJECT
public:
QWSMYKbPrivate(QWSMYKeyboardHandler *handler, const QString &device);
~QWSMYKbPrivate();
bool isOpen() { return buttonFD > 0; }
private Q_SLOTS:
void readKeyboardData();
private:

本文介绍了在QT程序中处理自定义键盘输入的方法,通过创建QWSMYKeyboardHandler类处理自定义键盘事件,详细步骤包括添加源文件、修改配置、编译及安装库,最终实现对开发板上自定义键盘按键的识别。
最低0.47元/天 解锁文章
4224

被折叠的 条评论
为什么被折叠?



