Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: robin_bobin от Июль 16, 2012, 18:27



Название: Сложная компоновка виджетов
Отправлено: 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.

Спасибо за помощь.


Название: Re: Сложная компоновка виджетов
Отправлено: V1KT0P от Июль 16, 2012, 18:31
Попробуй нарисовать схему как и что должно быть, а то как-то мутно описано.


Название: Re: Сложная компоновка виджетов
Отправлено: robin_bobin от Июль 16, 2012, 18:44
примерно так
http://hostingkartinok.com/show-image.php?id=9b38ad94137b6af5c90a5b3a7bc9e072 (http://hostingkartinok.com/show-image.php?id=9b38ad94137b6af5c90a5b3a7bc9e072)


Название: Re: Сложная компоновка виджетов
Отправлено: V1KT0P от Июль 16, 2012, 19:18
примерно так
http://hostingkartinok.com/show-image.php?id=9b38ad94137b6af5c90a5b3a7bc9e072 (http://hostingkartinok.com/show-image.php?id=9b38ad94137b6af5c90a5b3a7bc9e072)
Вот так?


Название: Re: Сложная компоновка виджетов
Отправлено: Bepec от Июль 16, 2012, 19:37
Спейсеры в помощь )
Думаю, Виктор уже привел правильное и логичное решение :D


Название: Re: Сложная компоновка виджетов
Отправлено: robin_bobin от Июль 16, 2012, 19:41
примерно так
http://hostingkartinok.com/show-image.php?id=9b38ad94137b6af5c90a5b3a7bc9e072 (http://hostingkartinok.com/show-image.php?id=9b38ad94137b6af5c90a5b3a7bc9e072)
Вот так?

да, так.


Название: Re: Сложная компоновка виджетов
Отправлено: robin_bobin от Июль 16, 2012, 21:21
примерно так
http://hostingkartinok.com/show-image.php?id=9b38ad94137b6af5c90a5b3a7bc9e072 (http://hostingkartinok.com/show-image.php?id=9b38ad94137b6af5c90a5b3a7bc9e072)
Вот так?

Если это ответ на мой вопрос, то не так. Я думал это пример как примерно должно располагаться) Дело в том, что в каждой строке 3 виджета, которые располагаются на QFrame. А тут они просто так лежат. Нехватает ещё 3х QFrame


Название: Re: Сложная компоновка виджетов
Отправлено: V1KT0P от Июль 16, 2012, 21:45
примерно так
http://hostingkartinok.com/show-image.php?id=9b38ad94137b6af5c90a5b3a7bc9e072 (http://hostingkartinok.com/show-image.php?id=9b38ad94137b6af5c90a5b3a7bc9e072)
Вот так?

Если это ответ на мой вопрос, то не так. Я думал это пример как примерно должно располагаться) Дело в том, что в каждой строке 3 виджета, которые располагаются на QFrame. А тут они просто так лежат. Нехватает ещё 3х QFrame
Кинь форму я посмотрю.


Название: Re: Сложная компоновка виджетов
Отправлено: robin_bobin от Июль 17, 2012, 23:22
Уже решил проблему.
1. добавил спэйсер после первого компонента в классе.
2. помести компоненты(экземпляры класса) на форму(динамически)
3. вычислил самую большую ширину первого компонента из всех классов.
3. установил ширину спэйсера для каждого экземпляра класса, равную максимальной ширине первого компонента минус ширина первого компонента в вычисляемом экземпляре класса.

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

Спасибо за помощь, реально помогли)