Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Evgkyz от Октябрь 31, 2012, 22:57



Название: Пропорциональное изменение размера
Отправлено: Evgkyz от Октябрь 31, 2012, 22:57
Всем привет.
Есть окно, в ней лейаут, в нем батоны и webview. Как сделать пропорциональное изменение размеров окна? Чтобы приложение всегда оставалось квадратным.


Название: Re: Пропорциональное изменение размера
Отправлено: Bepec от Октябрь 31, 2012, 23:06
Пропорции сохраняем 2 к 1. Всё. арифметика ^^


Название: Re: Пропорциональное изменение размера
Отправлено: kambala от Ноябрь 01, 2012, 00:04
в resizeEvent руками подгонять второй размер


Название: Re: Пропорциональное изменение размера
Отправлено: twp от Ноябрь 01, 2012, 00:25
Цитата: Assistant
int QWidget::heightForWidth ( int w ) const [virtual]


Название: Re: Пропорциональное изменение размера
Отправлено: Evgkyz от Ноябрь 01, 2012, 00:41
в resizeEvent руками подгонять второй размер

Цитата: Assistant
int QWidget::heightForWidth ( int w ) const [virtual]

Поподробнее, что куда лепить? Попробовал и то и то, ничего не получилось.


Название: Re: Пропорциональное изменение размера
Отправлено: twp от Ноябрь 01, 2012, 01:28
просто переопредели в своем окне этот метод с такой реализацией:
Код
C++ (Qt)
int Window::heightForWidth(int w) const
{
   return w;
}
 


Название: Re: Пропорциональное изменение размера
Отправлено: Evgkyz от Ноябрь 01, 2012, 12:56
просто переопредели в своем окне этот метод с такой реализацией:
Код
C++ (Qt)
int Window::heightForWidth(int w) const
{
   return w;
}
 

Сделал. А дальше что?


Название: Re: Пропорциональное изменение размера
Отправлено: twp от Ноябрь 01, 2012, 15:15
По идее это все.  Проверь отладчиком, вызывается ли этот метод при ресайзе.


Название: Re: Пропорциональное изменение размера
Отправлено: GreatSnake от Ноябрь 01, 2012, 16:17
По идее это все.  Проверь отладчиком, вызывается ли этот метод при ресайзе.
Вы уверены, что это применимо для top-level окон?

2 Evgkyz:
Как вы представляете поведёт себя Window Manager (WM) после того как он изменил размер клиентского окна, а клиент сразу же просит WM снова изменить размер? Особенно в интерактивном режиме? Особенно под X11? Как минимум его немного заколбасит)
Для таких вещей нужно отказываться от WM вообще либо не позволять интреактивно менять размер окна средствами WM.

Решение чисто для винды см. здесь (http://blog.ufna.ru/2010/08/16/qt-proportional-window-resize-win).


Название: Re: Пропорциональное изменение размера
Отправлено: twp от Ноябрь 01, 2012, 16:30
По идее это все.  Проверь отладчиком, вызывается ли этот метод при ресайзе.
Вы уверены, что это применимо для top-level окон?
Не уверен, но грех его не попробовать :)