![]() |
|
|
![]()
|
|
| featZima |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 31.8.2008 Где: Украина, Харьков Репутация: нет Всего: нет |
Пытаюсь повторить интерфейс FChat-а. В Delphi всё делается просто: на форму кладётся TListView, для него Align=alRight, после кладётся TSplitter, для него Align=alRight, потом кладётся любой элемент, для него Align=alClient и всё работает как надо. При изменении размеров окна ширина списка чётко зафиксирована, при желании пользователь может её изменить, потянув за сплиттер.
Для Qt сплошные дебри... Использую QSpiltter на всю форму, на него кладу два фрейма, одному в политику размера ставлю Fixed, другому Expanded, но при изменении размера формы, тянуться оба.... Нагуглил функциb QSplitter::SetRiseziMode() и QSplitter::KeepSize(), но их в qt4 почему то нет. Подскажите как реализовать? http://floomby.ru/content/3OWYk0U6rE/ |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
maximum size width поставь нужного тебе размер. Fixed работает только когда дело не доходит до растягивания layout'a, отсюда и косяки. Правда есть свойство layoutSizeConstraint, но к сожалению ограничение задается одновременно и по высоте и по ширине.
|
|||
|
||||
| featZima |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 31.8.2008 Где: Украина, Харьков Репутация: нет Всего: нет |
Срабатывает, но только ширина списка тогда замирает навсегда, и сплиттер уже не может её изменить в большую сторону.
|
|||
|
||||
| SABROG |
|
||||||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Сорри, недопонял поначалу. setResizeMode пропал в эту сторону:
Это сообщение отредактировал(а) SABROG - 20.2.2009, 11:58 |
||||||||
|
|||||||||
| featZima |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 31.8.2008 Где: Украина, Харьков Репутация: нет Всего: нет |
Спасибо большое, это именно то, что надо)
|
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Ладно, колись как оно работает? И horizontal stretch выставил в 1 (разница видна только в дизайнере, а при preview все-равно обе половинки ровные). И horizontal fixed policy поставил для фрейма. Если сплиттер отвести влево и менять размер окна тягая правую рамку, то все-равно размеры правого фрейма меняются... |
|||
|
||||
| featZima |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 31.8.2008 Где: Украина, Харьков Репутация: нет Всего: нет |
В дизайнере не всегда всё выглядит так как будет ^^ Я создал проект в QCreator-е
при создании формы нужно выполнить следующий код
P.S. я не до конца понимаю почему именно так, но работает... Больше всего меня смущает то, что в setStrechFactor надо указывать индекс 0, для виджета, а при указании размера, индекс 1... P.S.2. кажется понял.... в setStrechFactor индексы соответсвуют порядку в инспекторе объектов, а в setSizes индексы ссответсвуют порядку отображения виджетов на экране... Это сообщение отредактировал(а) featZima - 20.2.2009, 16:06 |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
stretch factor это значение, которое указывает на то какую часть свободной площади будет занимать виджет по отношению к другим виджетам. Например если поставить одному фрейму horizontalStretch 1, а второму фрему 2. То первый будет занимать 1/3 свободной площади, а второй фрейм 2/3 свободной площади. Ты не обязан задавать этот фактор через сплиттер, можешь тупо прописать его в свойствах фреймов в дизайнере.
|
|||
|
||||
| featZima |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 31.8.2008 Где: Украина, Харьков Репутация: нет Всего: нет |
SABROG, спасибо за ценные советы ;) Вот что у меня получилось...
http://floomby.ru/content/xAesmxgKEW/ Это сообщение отредактировал(а) featZima - 21.2.2009, 14:39 |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |