crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как узнать layout в котором находится данный widget ?
bobdva
  опции профиля:
сообщение 15.10.2008, 11:36
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 29
Регистрация: 2.10.2008
Из: Москва
Пользователь №: 377

Спасибо сказали: 0 раз(а)




Репутация:   0  


не могу найти в документации как получить layout, в котором находится данный widget (узнать необходимо из самого widget'а).
пытаюсь сделать финт ушами типа
this->parentWidget()->layout()


но!
если parent widget содержит layout - то всё замечательно,

однако,

если parent widget содержит layout, который содержит ещё один layout, в котором содержится данный widget, то такая методика сработает не верно. :unsure:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 15.10.2008, 11:44
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


А если просто получить родителя виджета, по идее им будет layout, в котором он находится...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 15.10.2008, 12:16
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(ViGOur @ 15.10.2008, 15:44) *
по идее им будет layout, в котором он находится...
нет, это не всегда так.
И вообще делать виджет без родителя, а только пихать его в в компоновщик плохо, например uic из файлов дизанера всегда виджеты привязывает к конкретному родительскому виджету и толко потм помещает в компоновщик. Я уже наступал на грбли с ненормальным поведением QSplitter когда виджеты принадлежат только ему.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bobdva
  опции профиля:
сообщение 15.10.2008, 13:32
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 29
Регистрация: 2.10.2008
Из: Москва
Пользователь №: 377

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ViGOur @ 15.10.2008, 12:44) *
А если просто получить родителя виджета, по идее им будет layout, в котором он находится...


привёл же пример, когда это не так:
Цитата
если parent widget содержит layout, который содержит ещё один layout, в котором содержится данный widget, то такая методика сработает не верно.

и конечно же попробовал и убедился

пока ничего иного как пробегания по layout'ам, если layout->indexOf(this) возвращает -1, то бежать по всем элементам (QLayoutItem) layout'ам, брать у них layout() - для элементов, являющимися вложенными layout'ами в layout вернёт указатель на него, иначе просто 0, и рекурсивно вызывать тот же метод... но это как-то...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 15.10.2008, 13:46
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


bobdva, да я тоже только такой способ вижу :(

Цитата(ViGOur @ 15.10.2008, 15:44) *
А если просто получить родителя виджета, по идее им будет layout, в котором он находится...
сейчас поэксперементировал, родитель всегда типа QWidget в котором лежит компоновщик верхнего уровня.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.12.2024, 9:50