• 2954阅读
  • 0回复

[提问]窗体间传递keypress事件问题 [复制链接]

上一主题 下一主题
离线yyywill
 

只看楼主 倒序阅读 楼主  发表于: 2015-07-25
程序运行创建了两个窗体form1和form2,form2上有3个private的button1、button2、button3。
在form1用定时器一秒向form2发送Qt::Key_Left,使form2上的3个button间循环切换焦点。
form2在前台active,且form2显示时3个button至少有一个是获取焦点状态。

form1的程序
  1.     QKeyEvent myEvent(QKeyEvent(QEvent::KeyPress, Qt::Key_Left,Qt::NoModifier));
  2.     QApplication::sendEvent((QObject *)form2, &myEvent); //这里只能发给form2,不能发给它的button
这样form2在active的情况下,三个button间并没有发生焦点切换。


但是如果form2在增加如下程序:
  1. void form2::keyPressEvent(QKeyEvent *event)
  2.     {
  3.             if(event->key() == Qt::Key_Left)
  4.             {
  5.                     QApplication::sendEvent((QObject *)button2, event); //这里任意一个button
  6.             }
  7.     }
三个button就会循环切换焦点。且把keypress事件只要发给任意一个button就可以。

就想问一下,form2里必须要作这个操作吗??为什么事件不能直接传递给form2上当前获取焦点的button呢?


快速回复
限100 字节
 
上一个 下一个