Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Lion от Январь 07, 2007, 23:34



Название: Вопрос по Layout
Отправлено: Lion от Январь 07, 2007, 23:34
Помогите решить проблему :?:  У меня есть три QStackedLayout, которые пломещены в QVBoxLayout. Мне нужно чтобы первый и третий не меняли свой размер по вертикали в сторону увеличения от оптимального, а второй занимал всё доступное простанство. В общем, если говорить языком Delphi первый - AlignTop, второй - AlignClient, третий - AlignBottom. Пол дня изучал ассистент - ничего не помогло.


Название: Вопрос по Layout
Отправлено: Steven_Orko от Январь 08, 2007, 00:04
maxSize и minSize помогают?


Название: Вопрос по Layout
Отправлено: Lion от Январь 08, 2007, 07:21
Цитата: "Steven_Orko"
maxSize и minSize помогают?

Нет, мне надо чтоб крайние лэйауты изменяли размер, но не больше оптимального.


Название: Вопрос по Layout
Отправлено: Steven_Orko от Январь 08, 2007, 17:09
А оптимальный как-то ведь определяется, верно? Так выстави его максимально возможным, а минимальный оставь как есть. Должно получится то, что ты хочешь. Хотя может, есть другой вариант, интересно, что бы ответил Dendy?


Название: Вопрос по Layout
Отправлено: Alex03 от Январь 08, 2007, 19:18
Понятия минимума и максимума у тролей несколько запутанное! :)
Т.е. часто чтобы виджет не растягивался надо ставить ему максимум а не минимум.


Название: Вопрос по Layout
Отправлено: bigirbis от Январь 08, 2007, 19:35
Так и есть, ограничение сверху: setMaxSize()


Название: Вопрос по Layout
Отправлено: Alex03 от Январь 08, 2007, 19:57
Цитата: "bigirbis"
Так и есть, ограничение сверху: setMaxSize()


С этим как раз всё логично.

Я имел  ввиду QSizePolicy::SizeType или конкретно QSizePolicy::Minimum и QSizePolicy::Maximum


Название: Вопрос по Layout
Отправлено: Lion от Январь 08, 2007, 23:36
Никакие SizePlicy не помогаю, хотя должны, а если в ручную ставить setMaxSize(), тогда зачем вообще нужны эти лэйауты! Должен быть способ, т.к. это очевидная задача лэйаутов.


Название: Вопрос по Layout
Отправлено: Racheengel от Январь 09, 2007, 00:18
Лэйауты не знают, да и не должны знать, какой размер для пользователя предпочтителен. Для этого и используются maxSize и minSize наряду с политиками. Они не противоречат, а дополняют друг друга. ИМХО - для этой задачи надо установить setMaxSize() для верхнего и нижнего виджета, а для среднего сделать политику QSizePolicy::Minimum или QSizePolicy::MinimumExpanding.


Название: Вопрос по Layout
Отправлено: BaltikS от Январь 09, 2007, 07:14
1. QSizePolicy::Fixed
2. QSizePolicy::Expanding
3. QSizePolicy::Fixed


Название: Вопрос по Layout
Отправлено: QCasper от Январь 09, 2007, 12:56
Цитата: "BaltikS"
1. QSizePolicy::Fixed
2. QSizePolicy::Expanding
3. QSizePolicy::Fixed


В таком случае 1й и 3й не смогут уменьшаться.
А согласно Т.З.:

Цитата: "Lion"
мне надо чтоб крайние лэйауты изменяли размер, но не больше оптимального.


Название: Вопрос по Layout
Отправлено: BaltikS от Январь 09, 2007, 14:11
Цитировать
В общем, если говорить языком Delphi первый - AlignTop, второй - AlignClient, третий - AlignBottom
.Согласно ТЗ, это как раз таки - так :lol:


Название: Вопрос по Layout
Отправлено: Lion от Январь 09, 2007, 22:01
Цитата: "BaltikS"
Цитировать
В общем, если говорить языком Delphi первый - AlignTop, второй - AlignClient, третий - AlignBottom
.Согласно ТЗ, это как раз таки - так :lol:

Совсем не так.


Название: Вопрос по Layout
Отправлено: BaltikS от Январь 09, 2007, 23:46
Lion, то что ты написал
Цитировать
Delphi первый - AlignTop, второй - AlignClient, третий - AlignBottom
, это так... Я вот тогда не понимаю какой случай ты имеешь ввиду, точнее понял что первый...


Название: Вопрос по Layout
Отправлено: Lion от Январь 10, 2007, 07:37
Цитата: "BaltikS"
Lion, то что ты написал
Цитировать
Delphi первый - AlignTop, второй - AlignClient, третий - AlignBottom
, это так... Я вот тогда не понимаю какой случай ты имеешь ввиду, точнее понял что первый...

Будем считать что у первого и врогого лайаута стоит (в Delphi) AutoSize = true.


Название: Вопрос по Layout
Отправлено: Dendy от Январь 10, 2007, 09:25
ОбьІчно когда я треяюсь в лейоутах - захожу в QtDesigner и начинаю експериментировать. Если нужно смотреть на готовой программе - юзайте QtPropertyBrowser.