1 / 1 / 0
Регистрация: 15.06.2012
Сообщений: 59

Изменение размеров виджета при изменении размеров окна

11.07.2012, 20:44. Показов 77324. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Окно, созданное Qt (в моем случае QMainWindow), можно увеличивать и уменьшать в размерах. А как сделать так, чтобы увеличение окна порождало увеличение какого-либо виджета(ов)?
Поиск и гугление ответа не дали...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.07.2012, 20:44
Ответы с готовыми решениями:

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

Изменение размеров виджета
Есть у меня QDockWidget, а на нём QTreeView. Как бы мне сделать так, чтобы размер QTreeView изменялся вместе с размером QDockWidget?

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

18
 Аватар для cyberdiem
75 / 26 / 2
Регистрация: 15.02.2012
Сообщений: 97
11.07.2012, 20:59
а виджеты на форме разве не дефолтно должны растягиваться если они в одном лейауте лежат? код кинь

Добавлено через 4 минуты
А вообще учись обращаться с Layout'ами и Stretch'ами и будет тебе счастье
1
1 / 1 / 0
Регистрация: 15.06.2012
Сообщений: 59
11.07.2012, 21:13  [ТС]
Вот и я слышал, что должны, а они ни в какую... При изменении они остаются на месте.
Кода нормального нет, вот в QtCreator (не совсем в нем, а в eclipse с Qt Integration Pack) набросал форму - Grid Layout, 4 TextEdit, между ними 2 вертикальных Spacer и 2 горизонтальных. Все это в QMainWindow без MenuBar (он мне пока не нужен, ибо ничего серьезного нет)

Что такое лэйаут знаю, а вот что такое Stretch? По названию очень смахивает на то что мне нужно...

Код метода setupUI:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
void setupUi(QMainWindow *clientClass)
{
    if (clientClass->objectName().isEmpty())
        clientClass->setObjectName(QString::fromUtf8("clientClass"));
    clientClass->resize(600, 400);
    centralwidget = new QWidget(clientClass);
    centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
    gridLayoutWidget = new QWidget(centralwidget);
    gridLayoutWidget->setObjectName(QString::fromUtf8("gridLayoutWidget"));
    gridLayoutWidget->setGeometry(QRect(10, 10, 581, 371));
    gridLayout = new QGridLayout(gridLayoutWidget);
    gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
    gridLayout->setContentsMargins(0, 0, 0, 0);
    textEdit = new QTextEdit(gridLayoutWidget);
    textEdit->setObjectName(QString::fromUtf8("textEdit"));
 
    gridLayout->addWidget(textEdit, 0, 0, 1, 1);
 
    textEdit_2 = new QTextEdit(gridLayoutWidget);
    textEdit_2->setObjectName(QString::fromUtf8("textEdit_2"));
 
    gridLayout->addWidget(textEdit_2, 0, 2, 1, 1);
 
    textEdit_3 = new QTextEdit(gridLayoutWidget);
    textEdit_3->setObjectName(QString::fromUtf8("textEdit_3"));
 
    gridLayout->addWidget(textEdit_3, 2, 0, 1, 1);
 
    textEdit_4 = new QTextEdit(gridLayoutWidget);
    textEdit_4->setObjectName(QString::fromUtf8("textEdit_4"));
 
    gridLayout->addWidget(textEdit_4, 2, 2, 1, 1);
 
    verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
 
    gridLayout->addItem(verticalSpacer, 1, 0, 1, 1);
 
    horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
 
    gridLayout->addItem(horizontalSpacer, 0, 1, 1, 1);
 
    clientClass->setCentralWidget(centralwidget);
    statusbar = new QStatusBar(clientClass);
    statusbar->setObjectName(QString::fromUtf8("statusbar"));
    clientClass->setStatusBar(statusbar);
 
    retranslateUi(clientClass);
 
    QMetaObject::connectSlotsByName(clientClass);
} // setupUi
0
 Аватар для gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
11.07.2012, 22:41
В QT дизайнере, где форму ты набросил, выбери самый верхний элемент в верхнем правом углу ( тоесть форму ), правая кнопка мыши, применить layout, выбери горизонтальный. Думаю это то, что тебе нужно.
1
1 / 1 / 0
Регистрация: 15.06.2012
Сообщений: 59
11.07.2012, 23:09  [ТС]
Почти оно. Благодарю!

А как отключить у некоторых виджетов перемещение? Отключил изменение размера установкой minimumSize и maximumSize установкой sizePolicy в Fixed, но они двигаются.
0
 Аватар для gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
12.07.2012, 23:09
Цитата Сообщение от Sky-WaLkeR Посмотреть сообщение
А как отключить у некоторых виджетов перемещение?
Сам в этом деле новичок. Тут надо играться.

Цитата Сообщение от Sky-WaLkeR Посмотреть сообщение
Отключил изменение размера установкой minimumSize и maximumSize
это правильно

Цитата Сообщение от Sky-WaLkeR Посмотреть сообщение
установкой sizePolicy в Fixed
а вот sizePolicy, если не ошибаюсь, все равно не действует в layout, у layout прав больше


Цитата Сообщение от Sky-WaLkeR Посмотреть сообщение
но они двигаются
тут возможно может помочь gorizontal или vertical spacer, а вообще лучше скриншотами показывай)) иначе тут не помогут(((
1
Эксперт С++
 Аватар для Maxim Prishchepa
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
12.07.2012, 23:27
Цитата Сообщение от gore-lykovoe Посмотреть сообщение
Сам в этом деле новичок. Тут надо играться.
а чо тут играться то? установили spacer и всё - приплыли, ни кто никуда не пошевелиться + установить для виджета sizePolicy в fixed или в minimal
Цитата Сообщение от gore-lykovoe Посмотреть сообщение
это правильно
ни разу не правильно, установите fixedSize и всё!
Цитата Сообщение от gore-lykovoe Посмотреть сообщение
а вот sizePolicy, если не ошибаюсь, все равно не действует в layout, у layout прав больше
чо это? могу ошибаться конечно, но всё же - баба яга против!
Цитата Сообщение от gore-lykovoe Посмотреть сообщение
тут возможно может помочь gorizontal или vertical spacer
нуу... тут не поспоришь, тут и я подпишусь
Цитата Сообщение от gore-lykovoe Посмотреть сообщение
а вообще лучше скриншотами показывай)) иначе тут не помогут(((

Не по теме:

а тут многие уже телепатией владеть научились ;) так что не стесняйтесь и задавайте вопросы из стиля: ну мне тут эту вот хрень, туда пришпандёрить..... как, а???

1
 Аватар для gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
13.07.2012, 12:11
l_a_m,

Не по теме:

словесный понос?

0
Эксперт С++
 Аватар для Maxim Prishchepa
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
13.07.2012, 16:05
Цитата Сообщение от gore-lykovoe Посмотреть сообщение
словесный понос?

Не по теме:

а шо, не видно? :))) я тут в поте лица тружусь не жалея пальцев, на вопросы отвечаю, а "здеся" - вот те на те... панос! эх... злые вы - уйду я от вас!

0
1 / 1 / 0
Регистрация: 15.06.2012
Сообщений: 59
13.07.2012, 16:14  [ТС]
Ох, а я уже и не слежу за темой, спасибо уведомлениям по почте...
Спасибо за ответы. Поигрался с sizePolicy, min- maxSize, Layout, Spacer и таки добился нужного результата. Кажется, начинаю понимать политику составления GUI в Qt, и она мне нравится... Раньше все по пикселям выверял, а теперь - бросил пару лэйаутов, не глядя дропнул элементы, отгородил спейсерами и margin - и все отлично масштабируется и выглядит.
0
Автор FAQ
 Аватар для Чистый
2733 / 1429 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
13.07.2012, 16:18
ага только проц нагружают пострашному ну это так давняя бага Qt
1
1 / 1 / 0
Регистрация: 15.06.2012
Сообщений: 59
13.07.2012, 16:23  [ТС]
Что нагружает? Layout, Spacer и т.д.? Не верю... У меня форма ~10Layout (вкладок много), ~5Spacer + стили почти на все элементы - при неистовом беганьи по элементам удалось выжать 01% проца...
Может, исправили?

Спасибо за инфу, много не буду добавлять
0
Эксперт С++
 Аватар для Maxim Prishchepa
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
13.07.2012, 16:48
Цитата Сообщение от Sky-WaLkeR Посмотреть сообщение
Что нагружает? Layout, Spacer и т.д.? Не верю... У меня форма ~10Layout (вкладок много), ~5Spacer + стили почти на все элементы - при неистовом беганьи по элементам удалось выжать 01% проца...
Может, исправили?
а теперь попробуй взять за уголок и подёргать (поресайзить) предварительно включив taskManager
2
1 / 1 / 0
Регистрация: 15.06.2012
Сообщений: 59
13.07.2012, 17:25  [ТС]
Понял, уел ) до 12 догнала.
Спасибо
0
2 / 1 / 1
Регистрация: 28.10.2014
Сообщений: 129
24.09.2016, 15:22
Подскажите пожалуйста , возможно ли избежать такой нагрузки и от чего это зависит?(Как я понимаю при смещении на каждый пиксель проц положение окна и размер начинает высчитывать?)
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
24.09.2016, 22:30
Валерий_, у тебя компьютер древний, и что-то заметно?
0
2 / 1 / 1
Регистрация: 28.10.2014
Сообщений: 129
25.09.2016, 00:32
Цитата Сообщение от nmcf Посмотреть сообщение
Валерий_, у тебя компьютер древний, и что-то заметно?
Нет, просто 25% от цп только за то , что я меняю разрешение окна; а дальше - больше,- сложнее интерфейс и большее кол-во слоёв = большая нагрузка, как прогеры с этим боряться?

(Комп 4+лет. Зрительно ничего не заметно.)
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
25.09.2016, 09:04
На видеокарту больше нагрузка должна быть.
0
Эксперт С++
 Аватар для Maxim Prishchepa
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
26.09.2016, 10:10
а точно эта проблема еще осталась? О_о

Добавлено через 28 секунд
как-бы не много не мало а 4 года прошло...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.09.2016, 10:10
Помогаю со студенческими работами здесь

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

Пропорциональное изменение размеров окна
Как сделать, чтобы при изменении размера окна программы пользователем (мышкой) сохранялось соотношение сторон? Собсна сам алгоритм...

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

Как сохранить размер элементов на сцене при изменении размеров на QGraphicsView?
Добавляю несколько эллипсов на сцену, а потом увеличиваю через scale на GraphicsView, но оно увеличивает и сами эллипсы. Как можно...

Появление виджета и расчет размеров
Задача расположить виджет в право нижнем углу. Для этого нужно получить размеры рабочей области экрана и вычесть размеры окна, но...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru