Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Allender от Августа 22, 2005, 15:38



Название: Граф объектов
Отправлено: Allender от Августа 22, 2005, 15:38
Нужно растолкать по виджету граф объектов.
Объекты ссылаютсы на соседние: left, right, top и bottom. То есть layout аля Motif.
Понятно, что нужно строить граф, и всё хорошо, если найдены все объекты, которые ссылаются на виджет-контейнер и между ними нет дырок. Тут проблем вроде нет. Но:
1. в графе могут быть дырки.
2. крайний объект может не ссылаться на родительский контейнер, а хранить только позицию.

Алгоритмическая часть апп и так тормозная, не хотелось бы чтобы GUI прибавляло тормозов:)

Чуть не забыл, GRID не подходит по внешнему виду.

Кто-нибудь знает о подобных алгоритмах?
Буду весьма благодарен за любые ссылки:)


Название: Граф объектов
Отправлено: Racheengel от Августа 23, 2005, 12:31
честно говоря, не понятен смысл проблемы. Можно поконкретней?


Название: Граф объектов
Отправлено: Allender от Августа 23, 2005, 12:42
Смотри, пусть у нас есть Фрайм и тройка виджетов в списке.

Берём первый виджет. Смотрим: он прикрепляется к нижней грани фрейма и говорит, что слева у него другой виджет?2.
Берём этот второй виджет. Смотрим: у него права наш первый виджет, который мы уже взяли, а сверху третий виджет.
Берём третий виджет. Смотрим: А у него снизу наш второй и ещё говорится о том, что во фреймовых кооординатах он на позиции (100.10)

Qt layout (кроме Grid) подразумевает, что мы кладём всё слева направо и сверху вниз. Здесь же совершенно противоположенная ситуация... И как её разрулить, пока не решил...
Grid не подходит, так как колонок быть не должно, а заморачиваться на multicell - ещё задачу усложнит...


Название: Граф объектов
Отправлено: Racheengel от Августа 23, 2005, 12:58
ну тогда ИМХО тебе надо свой layout manager создавать...


Название: Граф объектов
Отправлено: Allender от Августа 23, 2005, 13:01
Дык ведь все дело то в алгоритме...
Если универсальный, так зациклиться может, а троссировку вести... тормоза будут и памяти выжрет...

Вот еслиб кто видел красивое решение :) Скажу бальшое пасиба:)


Название: Граф объектов
Отправлено: Racheengel от Августа 23, 2005, 13:42
а как такое можно без трассировки сделать? тебе все равно придется координаты сканить...


Название: Граф объектов
Отправлено: Allender от Августа 23, 2005, 14:35
Зачем? Только в одно из нескольких случаев.
Если честно, я бы хотел обойтись только QBoxLayout.

В конце концов, задачу можно упростить... Начать по-легче...
Выкинуть из рассмотрения задание в координатах.
Здесь уже нужно строить граф и знать его ширину и высоту....
Так как координат нет, то хотябы один из виджетов должен ссылаться на контейнер. От него и надо плясать и вычислять размерность графа. Но вот при вычислении этой размерности я и боюсь зацикливания... Здась и нужно будет вести трассировку, так как граф сождержит в себе циклы.

Если вычислить размерность, то мона смело забивать в Layout spacе-ы в нужных местах и всё получится...

Хотя, на эти цмклы можно забить, если искать в ширину...
Вообщем... четкого решения пока нет...