QLayout *rw_recurseFindLayout(QLayout *lo, QWidget *w) { //printf("scanning layout: %p\n", lo); QLayoutIterator it = lo->iterator(); for(QLayoutItem *i; (i = it.current()); ++it) { //printf("found: %p,%p\n", i->layout(), i->widget()); QLayout *slo = i->layout(); if(slo) { QLayout *tlo = rw_recurseFindLayout(slo, w); if(tlo) return tlo; } else if(i->widget() == w) return lo; } return 0; }
QLayout *rw_recurseFindLayout(QLayout *lo, QWidget *w) { //printf("scanning layout: %p\n", lo); for (int index = 0; index < lo->count(); ++index) { QLayoutItem* i = lo->itemAt(index); //printf("found: %p,%p\n", i->layout(), i->widget()); QLayout *slo = i->layout(); if(slo) { QLayout *tlo = rw_recurseFindLayout(slo, w); if(tlo) { return tlo; } } else if(i->widget() == w) { return lo; } } return 0; }
QLayout *rw_findLayoutOf(QWidget *w) { return rw_recurseFindLayout(w->parentWidget()->layout(), w); }