程序运行创建了两个窗体form1和form2,form2上有3个private的button1、button2、button3。
在form1用
定时器一秒向form2发送
Qt::Key_Left,使form2上的3个button间循环切换焦点。
form2在前台active,且form2显示时3个button至少有一个是获取焦点状态。
form1的程序
- {
- QKeyEvent myEvent(QKeyEvent(QEvent::KeyPress, Qt::Key_Left,Qt::NoModifier));
- QApplication::sendEvent((QObject *)form2, &myEvent); //这里只能发给form2,不能发给它的button
- }
这样form2在active的情况下,三个button间并
没有发生焦点切换。
但是如果form2在增加如下程序:
- void form2::keyPressEvent(QKeyEvent *event)
- {
- if(event->key() == Qt::Key_Left)
- {
- QApplication::sendEvent((QObject *)button2, event); //这里任意一个button
- }
- }
三个button就会循环切换焦点。且把keypress事件只要发给任意一个button就可以。
就想问一下,form2里必须要作这个操作吗??为什么
事件不能直接传递给form2上当前获取焦点的button呢?