Russian Qt Forum
Июня 21, 2025, 09:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Сложная компоновка виджетов  (Прочитано 4435 раз)
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]   Вверх
  Печать  
 
Перейти в:  


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