c++ - ArrowKey控制更多流体

标签 c++ qt events arrow-keys

我在用

         event->key()== Qt::Key_Down

使用Qt中的箭头键进行控制和对象化。
对于所有箭头键(向右,向左,向上和向下),我都具有相同的功能,但是发生的事情是非常严格的。想要左右移动,您必须按向右箭头键,然后释放它,然后按向下箭头键。而我希望用户能够同时演示并重新定位。我试过了,但无济于事。
     else if(event->key()== Qt::Key_Down && event->key()== Qt::Key_Right ){ 

   setPos(x()+10,y()+10);

     }

最佳答案

与大多数事件处理程序一样,Qt仅告诉您何时按下某个键,并将所有按键放入队列。因此,带有&&的代码将永远不会被调用,因为如果Qt::Key_Down和Qt::Key_Right会被一个接一个地处理,那么它们就会被按下。

您需要的功能是检查是否按住了键,即是否按住了左键然后向左走,如果按住了向下键就往下走,如果同时按住了两个键就往左下走。

Qt对此没有任何功能。其他人则推荐了操作系统特定的解决方案,例如使用windows.h#ifdefs

看看这个问题:
Check if a Key is Down with Qt

祝好运!

关于c++ - ArrowKey控制更多流体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29155846/

相关文章:

android - 无法启动服务器 QWsServer 错误 : The address is protected

delphi - 是否可以在Qt中设置数据库连接而无需编写代码(例如在Delphi中)?

events - Esper 对战 Coral8。 . .事件流处理

C++在遍历列表时从列表中删除

c++ - eof函数如何在cpp上工作?

c++ - QVector内存管理

C# 自定义事件处理程序

javascript - 如何使用angularjs在窗口关闭时触发一个函数

c++ - 使用 ldap_get_next_page_s 进行 LDAP 排序会导致错误 LDAP_UNAVAILABLE_CRIT_EXTENSION

C++:使用for循环创建多个数据结构