keyboarddialog.h
#ifndef KEYBOARDDIALOG_H
#define KEYBOARDDIALOG_H
#include <QDialog>
#include <QKeyEvent>
namespace Ui {
class KeyboardDialog;
}
class KeyboardDialog : public QDialog
{
Q_OBJECT
public:
explicit KeyboardDialog(QWidget *parent = 0);
~KeyboardDialog();
private:
//键盘按键按下时执行的事件处理函数
void keyPressEvent(QKeyEvent *event);
private:
Ui::KeyboardDialog *ui;
};
#endif // KEYBOARDDIALOG_H
keyboarddialog.cpp
#include "keyboarddialog.h"
#include "ui_keyboarddialog.h"
KeyboardDialog::KeyboardDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::KeyboardDialog)
{
ui->setupUi(this);
}
KeyboardDialog::~KeyboardDialog()
{
delete ui;
}
//键盘按键按下时执行的事件处理函数
void KeyboardDialog::keyPressEvent(QKeyEvent *event)
{
//获取label所在的当前位置
int x = ui->label->pos().x();
int y = ui->label->pos().y();
if(event->key() == Qt::Key_Left){//左
ui->label->move(x-10,y);
}
else if(event->key() == Qt::Key_Right){//右
ui->label->move(x+10,y);
}
else if(event->key() == Qt::Key_Up){//上
ui->label->move(x,y-10);
}
else if(event->key() == Qt::Key_Down){//下
ui->label->move(x,y+10);
}
}
main.cpp
#include "keyboarddialog.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
KeyboardDialog w;
w.show();
return a.exec();
}