QT监测键盘时间 有延迟 在第一次按下按键的时候会有延迟,想要像游戏一样把按键响应做的很丝滑该怎么做嘞
emmmmmm 我自己找到了一种解决办法
```c++
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
this->timer = new QTimer(this);
timer->setSingleShot(false);
timer->setInterval(10);
connect(timer,SIGNAL(timeout()),this,SLOT(timerTimeOutSLot()));
timer->start();
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::keyPressEvent(QKeyEvent* event)
{
int key = event->key();
//timer->start();
if(key == Qt::Key_A ){
ui->label_A->setText("A");
this->keyA = true;
}else if(key == Qt::Key_S){
ui->label_S->setText("S");
this->keyS = true;
}else if(key == Qt::Key_W){
ui->label_w->setText("W");
this->keyW = true;
}else if(key == Qt::Key_D){
ui->label_D->setText("D");
this->keyD = true;
}
}
void Dialog::keyReleaseEvent(QKeyEvent *event)
{
int key = event->key();
if(key == Qt::Key_A ){
ui->label_A->setText("A");
this->keyA = false;
}else if(key == Qt::Key_S){
ui->label_S->setText("S");
this->keyS = false;
}else if(key == Qt::Key_W){
ui->label_w->setText("W");
this->keyW = false;
}else if(key == Qt::Key_D){
ui->label_D->setText("D");
this->keyD = false;
}
}
void Dialog::timerTimeOutSLot()
{
if(keyA){
ui->pushButton->move(ui->pushButton->x()-2,ui->pushButton->y());
}
if(keyS){
ui->pushButton->move(ui->pushButton->x(),ui->pushButton->y()+2);
}
if(keyW){
ui->pushButton->move(ui->pushButton->x(),ui->pushButton->y()-2);
}
if(keyD){
ui->pushButton->move(ui->pushButton->x()+2,ui->pushButton->y());
}
}
//void Dialog::btnClickedSlot()
//{
// qDebug()<<"001";
//}
```