• 7928阅读
  • 1回复

Qt如何遍历设置所有子控件的policy [复制链接]

上一主题 下一主题
离线kellen851105
 
只看楼主 正序阅读 楼主  发表于: 2010-02-25
我的stackedWidget里每一页都有很多子widget,现在出现了点击子widget有虚框的现象,在论坛里搜索了一下,用QWidget::setFocusPolicy(Qt::NoFocus)
这个方法可以去掉子widget的虚框,但是我想让所有的widget点击时都设置这个policy,所以需要遍历子控件,请问如何遍历?还有没有其他更好的办法。多谢
离线hercules

只看该作者 1楼 发表于: 2010-02-25
void mySetFocusPolicy(QWidget * w)
{
     if(!w) return;
     QObjectList list = w->children();
    foreach(QObject * obj,list)
   {
       if(!obj->isWidgetType()) continue;

       mySetFocusPolicy((QWIdget*)obj);
   }
   w->setFocusPolicy(...);
}
但这个是笨办法,比较好的做法是重载QStyle::drawPrimitive(QStyle::PE_FrameFocusRect /*Do nothing for this option*/,...)
我的QQ号:337396132
欢迎大家加我为好友,一起学习Qt
快速回复
限100 字节
 
上一个 下一个