crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Qt Designer, размер и положение виджетов, сплиттеры
Vova01987
  опции профиля:
сообщение 24.3.2015, 16:32
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 24.3.2015
Пользователь №: 4359

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем привет!
Бюсь тут над одной проблемой, никак разобраться не могу. Суть в следующем: например в Qt Designer есть 2 виджета, graphicsView и treeView. Они объединены командой "Lay Out Vertically in Splitter":
Прикрепленное изображение

В превью показывается следующая картина:
Прикрепленное изображение

Но после компиляции и запуска приложения картина вот такая (если treeView располагается сверху):
Прикрепленное изображение

А если treeView располагается снизу, то картина будет такая:
Прикрепленное изображение


Я не понимаю, почему виджеты ведут себя так. Никаких настроек расположения я при этом не делал. Почему treeView всегда больше, чем graphicsView?
В общем, мне нужно каким-то образом устнавить размеры всех виджетов, чтобы при запуске приложения они вели себя так, как мне нужно. При этом установка minimumSize для виджетов мне не подходит, т.к. во-первых мне нужно сплиттером свободно регулировать их размеры вплоть до 1 пикселя по высоте, а не до minimumSize; а во-вторых, если настроить масштабирование окна, опять-же размеры виджетов будут не такие какие нужно, допустим, если мне нужно, чтобы они занимали ровно половину экрана каждый при полноэкранном режиме, как этого добиться. Или соотношения их размеров 30/70 процентов например, и чтобы при масштабировании это соотношение сохранялось. Как это сделать в Qt Designer?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 24.3.2015, 16:42
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Советую посмотреть на политики изменения размера для каждого из виджетов (QSizePolicy). Ну и еще надо учитывать рекомендуемые размеры (hints), которые заданы для этих виджетов.
Вообще, и сплитером можно управлять, правда в дизайнере набор функций по настройке минимален.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Vova01987
  опции профиля:
сообщение 25.3.2015, 9:58
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 24.3.2015
Пользователь №: 4359

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(wiz29 @ 24.3.2015, 16:42) *
Советую посмотреть на политики изменения размера для каждого из виджетов (QSizePolicy). Ну и еще надо учитывать рекомендуемые размеры (hints), которые заданы для этих виджетов.
Вообще, и сплитером можно управлять, правда в дизайнере набор функций по настройке минимален.

А поконкретнее, как использовать hints?
Я кстати попробовал сейчас создать новый gui проект, и там не наблюдается такой картины, как на моих скринах. В новом проекте 2 виджета разделяются сплиттером пополам, как в превью, так и после компиляции. Но всё равно вопрос остаётся открытым. Если мне нужно, чтобы верхний виджет занимал 30% области сплиттера, а нижний - 70% при любом размере окна, как это сделать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Vova01987
  опции профиля:
сообщение 25.3.2015, 10:28
Сообщение #4


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 24.3.2015
Пользователь №: 4359

Спасибо сказали: 0 раз(а)




Репутация:   0  


Кажется, сам разобрался. Нашёл на англоязычном форуме. Оказывается, в таком случае надо использовать stretch factor. Например, когда в сплиттере 2 виджета расположены вертикально, у верхнего виджета задаём Vertical Stretch = 3, а у нижнего Vertical Stretch = 7. И получаем, что при любом масштабировании окна верхний виджет будет занимать 30% области сплиттера, а нижний - 70%.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 25.3.2015, 11:51
Сообщение #5


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Так и есть. Но не всеми свойствами сплитера можно управлять из дизайнера. А хинты размеров рассчитывает автор конкретного виджета, ими управлять напрямую нельзя.
Только через наследование.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Vova01987
  опции профиля:
сообщение 25.3.2015, 13:17
Сообщение #6


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 24.3.2015
Пользователь №: 4359

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(wiz29 @ 25.3.2015, 11:51) *
Так и есть. Но не всеми свойствами сплитера можно управлять из дизайнера. А хинты размеров рассчитывает автор конкретного виджета, ими управлять напрямую нельзя.
Только через наследование.

Понятно, спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.1.2022, 23:23