qt关于键盘事件的问题

Jerryup 2016-02-22 08:17:14
这是我在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触发时间,然后第一次就响应键盘事件,请高手回答!
...全文
117 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

16,211

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧