• 5662阅读
  • 4回复

[提问]QStatusBar上的控件自动聚焦如何取消 [复制链接]

上一主题 下一主题
离线whynotcxm
 

只看楼主 正序阅读 楼主  发表于: 2015-02-09
    在QMainWindow的QStatusBar上使用addWidget添加了一个QTableWIdget的控件和一个QTableWidgetItem,当QMainWindow第一次显示的时候发现QTableWidgetItem被选中了,当QMainWindow再次显示时QTableWidgetItem又没有被选中(如QMainWindow第一次显示之后立刻点击其他窗口然后在点击QMainWindow),把QTableWidget替换成QTextEdit也是同样在第一次实现是被选中(focus in)。
    设置了QTableWidget的FocusPolicy没有效果,测试了不设置任何条件,直接new一个QTableWIdget添加也是会选中,应该不是我设置的问题,请问有人遇到过这个问题吗,怎么解决?
    我目前的解决办法是继承QTableWidget然后在focusInEvent函数中对第一次选中进行clearFocus,可以实现我想要的效果,但是这样实现代码比较多,且有点不够简洁,有没有更直接的办法呢?而且我也想知道为什么会被选中呢?因为我没有设置任何选中控件的操作。
   我使用的QT版本是linux下4.3的。
离线roywillow

只看该作者 4楼 发表于: 2015-02-10
回 whynotcxm 的帖子
whynotcxm:整个结构就是一个BoxLayout,然后依次加入QLabel和QTableWidget,之所以需要取消QTableWIdget的焦点选中是因为初始化的时候会设置QTableWidgetItem的checkstate和text内容,结果焦点自动选中之后text类容被清空了,所以要专门去取消自动选中,没办法。组件的话只有一个QTablewidg .. (2015-02-09 21:52) 

为什么设置焦点后text就会被清空?从这个方面能入手吗?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线whynotcxm

只看该作者 3楼 发表于: 2015-02-09
回 roywillow 的帖子
roywillow:一般这种对焦点有特殊要求的还真不多见……
是不是组件添加的顺序改改会好一些?比如焦点会不会首先在第一个加入的widget中?status bar在整个窗口其他组件都添加完了再添加? (2015-02-09 21:35) 

整个结构就是一个BoxLayout,然后依次加入QLabel和QTableWidget,之所以需要取消QTableWIdget的焦点选中是因为初始化的时候会设置QTableWidgetItem的checkstate和text内容,结果焦点自动选中之后text类容被清空了,所以要专门去取消自动选中,没办法。组件的话只有一个QTablewidget可以被选中和聚焦,所以和组件田间顺序没关系,而且QLabel在QTableWidget以前被添加
离线roywillow

只看该作者 2楼 发表于: 2015-02-09
一般这种对焦点有特殊要求的还真不多见……
是不是组件添加的顺序改改会好一些?比如焦点会不会首先在第一个加入的widget中?status bar在整个窗口其他组件都添加完了再添加?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线whynotcxm

只看该作者 1楼 发表于: 2015-02-09
有没有人遇到过这个问题啊?
快速回复
限100 字节
 
上一个 下一个