标题:关于键盘事件按一下以后才执行奇怪现象
作者:水镜先生
日期:2016-02-22 08:01
内容:
这是我在QGraiphicsScene中的事件处理函数:在myscence.cpp中
void myscene::keyPressEvent(QKeyEvent *event)
{
qDebug() key()== Qt::Key_Down)
vect_snake.state = 3;
//vect_snake.item_snake->moveBy(0,10);
if(event->key() == Qt::Key_Up)
vect_snake.state = 2;
if(event->key() == Qt::Key_Right)
vect_snake.state = 0;
if(event->key() == Qt::Key_Left)
vect_snake.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:
&nb ..
#1 [dbzhang800 02-22 09:19]
现象不奇怪。获取焦点的widget才能接收按键事件。
之前你的焦点在哪个widget上我不知道,但是你点击一下按钮,焦点肯定在你的按钮上了。
#2 回 dbzhang800 的帖子 [水镜先生 02-22 09:57]
dbzhang800:现象不奇怪。获取焦点的widget才能接收按键事件。
之前你的焦点在哪个widget上我不知道,但是你点击一下按钮,焦点肯定在你的按钮上了。(2016-02-22 09:19)
我就是在Widget里加了一个button和一个graphicsview,然后在graphicsview里添加自己的myscene场景,很简单,
我在void Widget::on_pushButton_clicked()
{
current_scene->startTimer(500);
current_scene->setFocus();
}里设置了场景焦点,因为键盘事件是在场景中触发的,但是还是不行啊,求版主能否详细指点一下!
#3 回 dbzhang800 的帖子 [水镜先生 02-22 10:03]
dbzhang800:现象不奇怪。获取焦点的widget才能接收按键事件。
之前你的焦点在哪个widget上我不知道,但是你点击一下按钮,焦点肯定在你的按钮上了。(2016-02-22 09:19)
我在void Widget::on_pushButton_clicked()
{
current_scene->startTimer(500);
ui->graphicsView->setFocus();
}里设置了焦点,问题解决了,非常感谢您的回答!