最近需要在一个嵌入式设备上使用物理按键跟Qt界面交互操作,
在这种没有鼠标的情况下,写Qt程序就要小心了,有些东东能用,
有些东东不能用,一定提前得有所考虑。
简单的交互最好只使用按钮,复杂点的,因为涉及到焦点的切换。
复杂点的,如果屏幕还要弹出输入法来,就更加麻烦一些了。
上图吧。
使用事件过滤器,将窗体所有部件的事件都集中在父窗体的事件处理函数中来处理,来决定下一个焦点切换到谁身上。
为了方便在上、下、左、右四个方向进行切换,所以使用了QGridLayout.
#ifndef ZPAGE1_H
#define ZPAGE1_H
#include <QWidget>
#include <QKeyEvent>
#include <QDebug>
#include <QGridLayout>
#include <QToolButton>
class ZPage1 : public QWidget
{
Q_OBJECT
public:
ZPage1(QWidget *parent = 0);
~ZPage1();
protected:
bool eventFilter(QObject *obj, QEvent *event);
private slots:
void ZSlotBtnClicked();
private:
QGridLayout *m_gridLayout;
QToolButton *m_btnArray[20];
};
#endif // ZPAGE1_H
#include "zpage1.h"
ZPage1::ZPage1(QWidget *parent)
: QWidget(parent)