首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >keyRelease/在Vista和Linux上的工作方式不同

keyRelease/在Vista和Linux上的工作方式不同
EN

Stack Overflow用户
提问于 2013-11-01 15:53:39
回答 1查看 364关注 0票数 0

我发现在Linux上真正释放密钥之前,不会触发keyPress事件。这种行为在视野上是不同的。下面是我的应用程序中的一段代码。

当我执行以下顺序时,这种差异就会发生: 1)按下CTRL键,2)将其保存一段时间,3)释放它。

在Linux上,只有发行版才能打印出来。直到3)你才能看到任何东西,然后你会看到“通知::键释放”和“通知::密钥释放”。

在Vista上,在1)之后,您将看到"notify::KeyPressed",然后在2)中,您可以检测到CTRL与QApplication::keyboardModifier().testFlag(Qt::ControlModifier).一起关闭。然后,你会看到“通知::键释放”。

我想发生在远景上的事情正是我所期望的。我如何在Linux上解决这个问题,以及为什么会出现这种情况?

谢谢你的帮忙!

代码语言:javascript
复制
MyApplication::QApplication
{
   bool notify(Object * receiver, QEvent * event) {
       try{
           if (event->type() == QEvent::KeyPress) {
               std::cout<<"notify::KeyPressed"<<endl;
           }

           if (event->type() == QEvent::KeyRelease) {
               std::cout<<"notify::KeyReleased"<<endl;
           }


            return QApplication::notify( receiver, event );
       }
       catch ( ... ) {
          std::cerr << "Unknown Exception caught: " << ends;

       }
       return false;

    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-04 17:03:41

终于发现了问题。我用的是运行在刀片上的虚拟机。当您连接到刀片,客户端工具,有一个选项:“发送第一个键”,默认情况下,它是禁用的,所以当连接到虚拟机时,当您按下CTRL,(记住第一个键是禁用的),您不会得到"keyPress“事件!在我启用它之后,它就开始像预期的那样工作!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19730352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档