使用键盘 qt 移动对象
Posted
技术标签:
【中文标题】使用键盘 qt 移动对象【英文标题】:Moving object using keyboard qt 【发布时间】:2018-11-21 09:58:21 【问题描述】:我正在尝试使用箭头键移动对象,但是当我启动应用程序时,什么也没有发生。你知道如何解决它吗?
@Update :我的矩形只向左和向右移动一次,但如果我使用 qDebug,它会识别我单击左或右的所有时间,有什么想法吗?
void MouvementJoueur::keyPressEvent(QKeyEvent *e)
switch ( e->key() )
case Qt::Key_Left:
rectangle->setPos(x()-10,y());
qDebug() << "You pressed the Key left";
break;
case Qt::Key_Right:
rectangle->setPos(x()+10,y());
qDebug() << "You pressed the Key right";
break;
提前谢谢你!
【问题讨论】:
“什么都没有发生”是相当模糊的错误描述。如果确实如此,实际上似乎什么也没发生,问题很可能出在主函数中,例如从不调用事件循环。 如果可能,您应该尝试提供 MCVE。此外,如果您希望其他人阅读您的代码,强烈建议您正确缩进。这只是对那些你想帮助你的人的基本礼貌。所有常用的 Qt IDE(Qt Creator、Visual Studio、KDevelop...)都具有自动缩进或代码格式化功能,因此没有理由在此处将格式不佳的代码发布到 Stack Overflow。 @hyde 我编辑了它,但我仍然必须在 *** 和 idk 中插入空格,我的意思是,如果我单击右箭头或左箭头,我的矩形不会移动。你有什么建议? 要在 SO 中正确格式化代码,只需将其粘贴到问题编辑文本框中,并使用您原来的正确缩进,并在下方和上方使用空行。然后选中整个代码sn-p,点击代码格式化图标
,或者键盘快捷键ctrl-K。
【参考方案1】:
您的问题似乎是,您获取父级的位置,并根据该位置设置矩形的位置。这可能不是您想要在此处使用按键的方式。你应该这样设置位置:
rectangle->setPos(rectangle->x() - 10, rectangle->y());
【讨论】:
【参考方案2】:您可以使用以下命令刷新 GUI
view->processEvents();
你可以调试它。它检测按键是否按下。
void MouvementJoueur::keyPressEvent(QKeyEvent *e)
if(e->key() == Qt::Key_Left)
rectangle->setPos(x()-10,y());
qDebug() << "You pressed the Key x";
if(e->key() == Qt::Key_Right)
rectangle->setPos(x()+10,y());
qDebug() << "You pressed the Key x";
【讨论】:
谢谢,它可以识别,但我的矩形没有显示在屏幕上,它是不可见的..以上是关于使用键盘 qt 移动对象的主要内容,如果未能解决你的问题,请参考以下文章