qt关于键盘事件的问题
这是我在QGraiphicsScene中的事件处理函数:在myscence.cpp中
void myscene::keyPressEvent(QKeyEvent *event)
{
qDebug() << "diaoyong";
if(event->key()== Qt::Key_Down)
vect_snake[vect_snake.size() - 1].state = 3;
//vect_snake[vect_snake.size() - 1].item_snake->moveBy(0,10);
if(event->key() == Qt::Key_Up)
vect_snake[vect_snake.size() - 1].state = 2;
if(event->key() == Qt::Key_Right)
vect_snake[vect_snake.size() - 1].state = 0;
if(event->key() == Qt::Key_Left)
vect_snake[vect_snake.size() - 1].state = 1;
}
我的时间处理函数:
void myscene::timerEvent(QTimerEvent *)
{
for(int i = 0; i < vect_snake.size();i++)
{
switch(vect_snake.at(i).state)
{
case 0:
vect_snake.at(i).item_snake->moveBy(10,0);
break;
case 1:
vect_snake.at(i).item_snake->moveBy(-10,0);
break;
case 2:
vect_snake.at(i).item_snake->moveBy(0,-10);
break;
case 3:
vect_snake.at(i).item_snake->moveBy(0,10);
break;
}
}
}
当我用按钮启动计时器时候,
void Widget::on_pushButton_clicked()
{
current_scene->startTimer(500);
},键盘事件在按一下以后,再按才会有响应,但是如果我把current_scene->startTimer(500);放在myscene构造函数中就不会出现此现象,但是按钮就不能触发时间事件了,我想用pushbutton触发时间,然后第一次就响应键盘事件,请高手回答!