Russian Qt Forum
Ноябрь 26, 2024, 16:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Сложная компоновка виджетов  (Прочитано 4238 раз)
robin_bobin
Гость
« : Июль 16, 2012, 18:27 »

Всем привет. Помогите разобраться.

1) Я создал класс с QHBoxLayout на котором расположен QFrame.
2) На QFrame расположен QHBoxLayout с 3мя виджетами.
3) Я создаю несколько объектов этого класса и помещаю его на QVBoxLayout.
4) QVBoxLayout помещаю на форму.
5) Первый и третий виджеты на QHBoxLayout могут иметь различную ширину и менять её во время запуска программы.

Нужно чтобы виджеты располагались таблично и придерживались левой стороны.
Например, ширина виджетов в 3х объектах класса:
100 100 100
120 100 130
110 100 140

Нужно чтобы вторые виджеты располагались строго в столбик, т.е. равнялись по позиции второго объекта класса(т.к. там он находится правее всех).
При расширении формы нужно чтобы ширина и позиция первых 2х виджетов оставалась неизменной, а ширина 3го виджета изменялась, но позиция оставалась такой же.
При изменении ширины виджетов, нужно чтобы компоновка виджетов работала по такому же принципу.

На сколько я понимаю в GridLayout такое нельзя сделать, т.к. виджеты должны располагаться на QFrame.

Спасибо за помощь.
Записан
V1KT0P
Гость
« Ответ #1 : Июль 16, 2012, 18:31 »

Попробуй нарисовать схему как и что должно быть, а то как-то мутно описано.
Записан
robin_bobin
Гость
« Ответ #2 : Июль 16, 2012, 18:44 »

примерно так
http://hostingkartinok.com/show-image.php?id=9b38ad94137b6af5c90a5b3a7bc9e072
Записан
V1KT0P
Гость
« Ответ #3 : Июль 16, 2012, 19:18 »

Вот так?
Записан
Bepec
Гость
« Ответ #4 : Июль 16, 2012, 19:37 »

Спейсеры в помощь )
Думаю, Виктор уже привел правильное и логичное решение Веселый
Записан
robin_bobin
Гость
« Ответ #5 : Июль 16, 2012, 19:41 »


да, так.
Записан
robin_bobin
Гость
« Ответ #6 : Июль 16, 2012, 21:21 »


Если это ответ на мой вопрос, то не так. Я думал это пример как примерно должно располагаться) Дело в том, что в каждой строке 3 виджета, которые располагаются на QFrame. А тут они просто так лежат. Нехватает ещё 3х QFrame
Записан
V1KT0P
Гость
« Ответ #7 : Июль 16, 2012, 21:45 »


Если это ответ на мой вопрос, то не так. Я думал это пример как примерно должно располагаться) Дело в том, что в каждой строке 3 виджета, которые располагаются на QFrame. А тут они просто так лежат. Нехватает ещё 3х QFrame
Кинь форму я посмотрю.
Записан
robin_bobin
Гость
« Ответ #8 : Июль 17, 2012, 23:22 »

Уже решил проблему.
1. добавил спэйсер после первого компонента в классе.
2. помести компоненты(экземпляры класса) на форму(динамически)
3. вычислил самую большую ширину первого компонента из всех классов.
3. установил ширину спэйсера для каждого экземпляра класса, равную максимальной ширине первого компонента минус ширина первого компонента в вычисляемом экземпляре класса.

Других вариантов нет, на сколько я понял.

Спасибо за помощь, реально помогли)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.054 секунд. Запросов: 21.