Название: как узнать в каком лаяуте лежит виджет Отправлено: shender от Октябрь 20, 2010, 10:37 Собственно вопрос:
Есть маинвиндой с кучай разных лаяутов, в лаяутах виджеты, есть ли возможность узнать в каком лаяуте лежит виджет? Название: Re: как узнать в каком лаяуте лежит виджет Отправлено: GreatSnake от Октябрь 20, 2010, 10:48 QLayout * QWidget::layout () const
Название: Re: как узнать в каком лаяуте лежит виджет Отправлено: shender от Октябрь 20, 2010, 10:57 QLayout * QWidget::layout () const возвращает лаяут установленный у вызываемого объекта, а необходимо, то в котором вызываемый объект лежитНазвание: Re: как узнать в каком лаяуте лежит виджет Отправлено: GreatSnake от Октябрь 20, 2010, 11:04 Цитировать возвращает лаяут установленный у вызываемого объекта, а необходимо, то в котором вызываемый объект лежит И в чём разница?Название: Re: как узнать в каком лаяуте лежит виджет Отправлено: Kolobok от Октябрь 20, 2010, 11:40 Вызови layout() у родительского виджета. В чем проблема то?
Название: Re: как узнать в каком лаяуте лежит виджет Отправлено: shender от Октябрь 20, 2010, 12:17 Вызови layout() у родительского виджета. В чем проблема то? в том, что layout() у парента возвращает указатель на лаяут установленный через setParent(QLayout*); А ситуация такая, что в этот самый парент лаяут накидано куча лаяутов, и в те лаяуты виджеты. -> если я у виджета вызову parentWidhget()->layout(), то он вернет не верный указатель. paretn->setLayout(l1); l1->addLayout(l2); l2->addLayout(l3); l3->addWidget(w1); w1->parentWidget()->layoy(); == l1; а мне необходим указатель на l3; Название: Re: как узнать в каком лаяуте лежит виджет Отправлено: Kolobok от Октябрь 20, 2010, 12:58 Тогда можно так
Код: QWidget *parent = childWidget->parentWidget(); Название: Re: как узнать в каком лаяуте лежит виджет Отправлено: GreatSnake от Октябрь 20, 2010, 13:15 Да, с этим у троллей сложно. Особенно сложно, если пытаешься найти лейаут для виджета из формы созданной в дизайнере.
Я тоже бился и пришлось написать следующее: Код
Название: Re: как узнать в каком лаяуте лежит виджет Отправлено: shirushizo от Октябрь 20, 2010, 13:15 Тогда можно так Код: QWidget *parent = childWidget->parentWidget(); Скорее всего не будет работать, т.к. родитель будет устоновлен только у одного лейаута. Название: Re: как узнать в каком лаяуте лежит виджет Отправлено: Kolobok от Октябрь 20, 2010, 13:31 Скорее всего не будет работать, т.к. радотель будет устоновлен только у одного лейаута. Ну если тебе даже проверить лень... Название: Re: как узнать в каком лаяуте лежит виджет Отправлено: ufna от Октябрь 20, 2010, 14:11 да, единственный способ в данном случае - брать лейаут родителя, и далее спускаться по дитям и искать.
Название: Re: как узнать в каком лаяуте лежит виджет Отправлено: offitserov от Октябрь 21, 2010, 19:20 Можно так, работает, проверено -
Код: static QLayout* findParentLayout(QLayout *parentWidgetLayout, QWidget *widget) |