• 4674阅读
  • 4回复

关于焦点问题(已解决) [复制链接]

上一主题 下一主题
离线sakiola
 
只看楼主 倒序阅读 楼主  发表于: 2009-07-28
我在一个widget里设置了一个button 一个spinbox
------------------------------
|                                      |
|    button    spinbox      |
|                                      |
------------------------------

基本上就上边那样

然后show了这个widget

请问 默认的话 谁有焦点?也就是说 谁首先接受来自键盘的事件?

我给widget重写了键盘事件 针对LEFT RIGHT键控制button的text

为什么当我按键的时候 接受事件的却是spinbox??而没有执行我的keyPressEvent?

为什么默认焦点会在spinbox上?

然后我在构造函数里+了setFocusPolicy为什么就可以了?

但是我还想spinbox能接受UP 、DOWN事件 怎么弄才好?

焦点把我弄晕了
[ 此帖被sakiola在2009-07-28 12:57重新编辑 ]
NB才是王道
离线sakiola
只看该作者 1楼 发表于: 2009-07-28
OK 搞定
NB才是王道
离线shiroki

只看该作者 2楼 发表于: 2009-07-28
搞定了要把答案也弄来结贴
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线yf24518150
只看该作者 3楼 发表于: 2009-07-29
用事件过滤器比较好
离线sakiola
只看该作者 4楼 发表于: 2009-07-29
引用第2楼shiroki于2009-07-28 15:39发表的  :
搞定了要把答案也弄来结贴


sorry~ sorry~

我是这样理解的 不知道对不对

当我给窗体添加了setFocusPolicy-strong 由窗体接受键盘事件 然后由窗体的event向下分发事件给事件处理器

由于当时我未给窗体重写UP和DOWN的按键处理 而只写了LEFT和RIGHT的 所以当我按UP和DOWN的时候没反应

想让spinBox有反应 在窗体的事件里直接将UP和DOWN截取过来 下发给spinBox处理就好了 spinBox默认接受键盘事件并处理arrow键

直接用sendEvent就可以
NB才是王道
快速回复
限100 字节
 
上一个 下一个