Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Simba от Октябрь 04, 2010, 15:30



Название: Вопрос по sizePolicy
Отправлено: Simba от Октябрь 04, 2010, 15:30
Есть два виджета, объединенных сплиттером. После применения компоновщика они встают одинаково по горизонтали.
Мне нужно чтобы соотношение между левым виджетом и правым виджетом было примерно 1:4 при показе диалога.
Я согласен даже установить левому виджету размер 200 пикселей по горизонтали, но при этом когда я растягиваю окно, должен растягиваться только правый виджет, а левый оставался в первоначальном размере.

Сейчас все варианты, которые я перепробовал не дают мне установить ни соотношение виджетов, ни размер.
Если установить горизонтальное растяжение, то при изменении размера оба виджета начинают менять размер, а я хочу, чтобы первый виджет реагировал только на сплиттер и ни на что больше.

Помогите! Уже на раз сталкиваюсь с подобной конструкцией интерфейса и всё время приходится в коде попиксельно выставлять :(


Название: Re: Вопрос по sizePolicy
Отправлено: GreatSnake от Октябрь 04, 2010, 16:05
setMinimumWidth(200), setMaximumWidth(200)


Название: Re: Вопрос по sizePolicy
Отправлено: Kolobok от Октябрь 04, 2010, 16:10
Код:
ui->splitter->setStretchFactor( 0, 0 );
ui->splitter->setStretchFactor( 1, 1 );
ui->splitter->setSizes( QList<int>() << 200 << 800 );


Название: Re: Вопрос по sizePolicy
Отправлено: Simba от Октябрь 04, 2010, 16:35
спасибо за ответы!
хотелось бы конечно, чтобы всё это регулировалось в design-time
StretchFactor можно, а вот начальный размер виджета похоже нет :(

Я надеялся, что sizePolicy "Preferred" берет значение из baseSize. А остальные виджеты подстраиваются под это. Было бы не плохо. Но... нет. Значит буду писать в коде.


Название: Re: Вопрос по sizePolicy
Отправлено: whirlwind от Октябрь 04, 2010, 17:46
Я согласен даже установить левому виджету размер 200 пикселей по горизонтали, но при этом когда я растягиваю окно, должен растягиваться только правый виджет, а левый оставался в первоначальном размере.

В дизайнере тоже можно такое сделать

1) horizontal size solicy у левого виджета должна быть Maximum, у правого Expanding
2) у левого поставить maximum Width 200

Вроде все так и будет.



Название: Re: Вопрос по sizePolicy
Отправлено: Simba от Октябрь 04, 2010, 21:12
whirlwind
Если так сделать, то сплиттер работать перестанет.
Он всё время пытается сделать так, чтобы виджеты были одинаковыми справа и слева,
и свойство expanding правого виджета действует лишь в правую сторону. Поиграл с sizePolicy сплиттера - тоже ничего.
Не могу я никак подружиться с кьютишным компоновщиком :(
Придется в коде прописывать, как товарищи советовали. В принципе и раньше так делал, но думал есть готовый вариант в дизайнере.


Название: Re: Вопрос по sizePolicy
Отправлено: whirlwind от Октябрь 05, 2010, 11:19
 8)
Вот в этом проектике так сделано, и вроде работает
Один виджет не больше 200 пикселей, второй растет. Размеры виджетов менять можно (но левый не больше 200, как и сказали)


Название: Re: Вопрос по sizePolicy
Отправлено: CL0NE от Октябрь 06, 2010, 02:24
Цитировать
В дизайнере тоже можно такое сделать

1) horizontal size solicy у левого виджета должна быть MaximumMinimum, у правого Expanding
и вместо
Цитировать
2) у левого поставить maximum Width 200
у левого поставить horizontal stretch 0, у правого - 1
Идеальных 200 пикселей нет, но по требованиям:
изменить размер левого виджета можно только при помощи сплиттера, при изменении размеров окна расширяется/сужается только окно
вроде бы оно :)


Название: Re: Вопрос по sizePolicy
Отправлено: UVV от Октябрь 06, 2010, 07:49
QSizePolicy::Ignored
?