Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/34: Рейтинг темы: голосов - 34, средняя оценка - 4.79
715 / 675 / 110
Регистрация: 29.05.2015
Сообщений: 4,062
1

Пропорциональное изменение размеров окна

19.01.2017, 18:35. Показов 6894. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как сделать, чтобы при изменении размера окна программы пользователем (мышкой) сохранялось соотношение сторон?

Собсна сам алгоритм понятен. Нужно хранить текущие размеры окна, ловить изменение размера, вычислять что больше меняется - горизонталь или вертикаль - и принудительно менять второй параметр. Но не изобретаю ли я велосипед? Может есть стандартный метод?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.01.2017, 18:35
Ответы с готовыми решениями:

Изменение размеров виджета при изменении размеров окна
Здравствуйте! Окно, созданное Qt (в моем случае QMainWindow), можно увеличивать и уменьшать в...

Изменение размеров окна при изменении размеров виджета
Доброго времени суток, господа программисты! Возникла такая ситуация: есть окно программы, в нем...

99% CPU при изменение размеров окна
Создал новый проект QtQuick 2.5, ничего в нем не менял, сразу запустил и заметил что при изменение...

Как обнаружить изменение размеров окна?
В программе есть ввод двух цифр которые будут размерами будущей матрицы, после нажатия определенной...

6
690 / 463 / 161
Регистрация: 01.10.2015
Сообщений: 1,272
19.01.2017, 18:45 2
Цитата Сообщение от alexu_007 Посмотреть сообщение
Может есть стандартный метод?
Теоретически, есть — это свойство sizeIncrement. Но на практике его применимость ограничивается примечанием из документации:

Warning: The size increment has no effect under Windows, and may be disregarded by the window manager on X11.
Отлавливайте событие изменение размера и в обработчике по описанному вами же выше методу...
0
0 / 0 / 0
Регистрация: 18.01.2017
Сообщений: 3
19.01.2017, 18:46 3
Есть стандартный метод который называется менеджером компоновки - Layout. Существует три вида менеджеров компоновки, которые размещают новые объекты по горизонтали (QHBoxLayout), вертикали (QVBoxLayout) или в ячейках сетки (QGridLayout).
Эти менеджеры и следят за изменениями геометрии окна и сами пересчитывают все координаты. Менеджеры компоновки можно вставлять друг в друга и тем самым можно создавать сложные окна.
0
Диссидент
Эксперт C
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
19.01.2017, 21:36 4
Цитата Сообщение от kolobok55 Посмотреть сообщение
Эти менеджеры и следят за изменениями геометрии окна и сами пересчитывают все координаты
Они пересчитывают только размеры и координаты внутренних виджетов. Изменением размеров самого окна они не занимаются. Они под него подстраивают нутрь.
alexu_007, Что-то вертится в голове. Типа WigthByHeigh или наоборот. Вроде как речь шла про подстройку ширины под высоту и сохранение пропорций. Но это - "Слышал звон, да не помню, откуда он." Если еще раз попадется на глаза - доложу. А может кто-то и знает?
0
715 / 675 / 110
Регистрация: 29.05.2015
Сообщений: 4,062
21.01.2017, 11:11  [ТС] 5
C++ (Qt)
1
2
3
4
5
void Widget::resizeEvent(QResizeEvent* f)
{
    float w = f->size().width();
    this->resize(w, w/1.45);
}
Работает, но не очень. Окно прыгает.
0
690 / 463 / 161
Регистрация: 01.10.2015
Сообщений: 1,272
21.01.2017, 15:17 6
Цитата Сообщение от alexu_007 Посмотреть сообщение
Работает, но не очень.
В Qt идеологически правильнее было бы ограничить содержимое с помощью менеджеров компоновки и соответствующих политик изменения размеров, а уже при изменении размеров содержимого - окно подстроится само.
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
21.01.2017, 18:50 7
Переопредели следующие методы:
C++ (Qt)
1
2
virtual bool hasHeightForWidth() const;
virtual int heightForWidth(int w) const;
0
21.01.2017, 18:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.01.2017, 18:50
Помогаю со студенческими работами здесь

Крашится Qt Creator при изменение размеров окна
При изменение размеров окна QtCreator'a (например, уменьшил его или свернул, а потом вернул на...

Пропорциональное увеличение компонентов QT в зависимости от увеличения размеров экрана
Здравствуйте,прошу вашей помощи по поводу пропорционального увеличения или уменьшения компонентов...

Изменения размеров окна
Доброго времени суток, мне нужно сделать изменения окна (стрелочкой), но у меня есть флаг который...

Установка размеров главного окна
Есть вот такой код (это файл mainwindow.cpp): #include "mainwindow.h" #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru