|
本帖最后由 yyywill 于 2015-7-24 22:56 编辑
程序运行创建了两个窗体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呢?
|
|