Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 03.08.2017
Сообщений: 148

HeightForWidth

22.01.2026, 19:40. Показов 860. Ответов 12

Студворк — интернет-сервис помощи студентам
Поместил в QtDesigner элемент типа QGridLayout на MainWindow, на этот QGridLayout еще 2 подслоя, QHBoxLayout один под другим,
на верхний поместил несколько элементов типа QLabel и QLCDNumber; запустил приложение и элементы не растягиваются и конечно не изменяется высота шрифта (как если бы не было QGridLayout и подслоя).
Как надо переопределять метод heightForWidth: для каждого элемента создавать дочерний элемент и писать руками свою функцию heightForWidth,
и в конструкторе вызвать sizePolicy().setHeightForWidth(true); возможно переопределить и SizeHint()
Либо создать дочерний класс от QGridLayout, переопределить hasHeightForWidth и heightForWidth только для QGridLayout, в heightForWidth перебрать все элементы обоих подслоев и как-то вычислить Height, Width и возможно высоту шрифта? Второе кажется проще, хотя и грубее.
Может надо устанавливать SizePolicy чтобы элементы QLabel и QLCDNumber изменяли размеры от растягивания окна?
0
 Аватар для kapbepucm
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,658
22.01.2026, 23:43
Цитата Сообщение от jykm Посмотреть сообщение
запустил приложение и элементы не растягиваются и конечно не изменяется высота шрифта
Всё же проблема, что элементы не растягиваются или не меняется высота шрифта? Например, QLabel, по умолчанию, при растягивании точно менять высоту шрифта не станет. Ещё было бы неплохо посмотреть минимальный запускабельный примерчик с описанием "как есть" и "как хочу, чтобы стало".
0
0 / 0 / 0
Регистрация: 03.08.2017
Сообщений: 148
23.01.2026, 08:20  [ТС]
Для начала проблема что ничего не растягивается, шрифты буду определять в методе heightForWidth
tmp.zip Писал в Qt4.7 т.к. потом будет проблема с переводом в Qt5 одной библиотеки.
0
 Аватар для Annemesski
2673 / 1335 / 480
Регистрация: 08.11.2016
Сообщений: 3,690
23.01.2026, 09:51
Цитата Сообщение от jykm Посмотреть сообщение
проблема что ничего не растягивается
Потому что вы как-то криво наформошлепили и у Вас gridLayout где-то ни пришей ни пристегни, в ui_mainwindow_ui.h в методе setupUi должна быть строчка на вроде
C++ (Qt)
1
Mainwidow->centralWidget()->setLayout(gridLayout);
к тому же вообще непонятен сакральный смысл использования здесь грид лэйоута, с текущим вариантом более чем справится более простой QVBoxLayout
0
0 / 0 / 0
Регистрация: 03.08.2017
Сообщений: 148
23.01.2026, 09:54  [ТС]
tmp.zip подправленная компилировшияся версия проекта, а Grid Layout т.к. в предыдущем проекте без слоев это было 4 ряда 2 столбца, а нижние слои содержат маленьких элементов 40 (в плане) и конечно нужен сложный слой. Исправляю по предыдущему замечанию.
0
0 / 0 / 0
Регистрация: 03.08.2017
Сообщений: 148
23.01.2026, 12:24  [ТС]
Упрощенный проект tmp1.zip.В ui_mainwindow.h удалил промежуточный виджет (типа verticalLayoutWidget) между centralWidget и главным слоем, вместо него использовал этот centralWidget, строку
C++
1
centralWidget->setLayout(verticalLayout)
вписал.
Уже растягиваются элементы QLCDNumber, возможно и QLabel (от минимального размера).
(verticalLayoutWidget не был виден в QtDesigner)
0
 Аватар для Recrut_rf
388 / 333 / 65
Регистрация: 14.10.2014
Сообщений: 1,439
24.01.2026, 20:14
Цитата Сообщение от Annemesski Посмотреть сообщение
Mainwidow->centralWidget()->setLayout(gridLayout);
вот не факт, это если всё ручками делать. Если наформошлёпить - то её не будет.
будет просто ui->setupUi() (или как там она - уже не помню год назад с Qt работал). То есть будет ссылка на функцию где "наформошлёпили" интерфейс. Вот там - да она уже должна быть.

А вообще - налицо неправильная работа с компоновщиками. Если работа идёт в QtDesigner - и при этом пришлось вызывать у себя в коде вещи наподобие sizePolicy().setHeightForWidth(true) - скорее всего работа в QtDesigner проведена плохо.....
0
0 / 0 / 0
Регистрация: 03.08.2017
Сообщений: 148
26.01.2026, 10:14  [ТС]
Создавал проекты в Qt4.7 и Qt5 (можно не удалять промежуточный виджет) и без вписывания строки centralWidget->setLayout(verticalLayout)
в ui_mainwindow.h ничего не растягивалось
0
 Аватар для Annemesski
2673 / 1335 / 480
Регистрация: 08.11.2016
Сообщений: 3,690
26.01.2026, 10:37
Цитата Сообщение от Recrut_rf Посмотреть сообщение
То есть будет ссылка на функцию где "наформошлёпили" интерфейс.
это будет в файле ui_<имя класса>.h на который я и указал
Цитата Сообщение от Annemesski Посмотреть сообщение
в ui_mainwindow_ui.h в методе setupUi должна быть строчка на вроде
правда суффикс ui в моем сообщении лишний.
0
0 / 0 / 0
Регистрация: 03.08.2017
Сообщений: 148
26.01.2026, 19:30  [ТС]
Вставлял в некоторый подслой Tab Widget, так его вкладке (tab_3) тоже пришлось сделать tab_3->setLayout(horizontalLayout_4), где horizontalLayout_4 слой внутри вкладки tab_3; может контекстным меню в QDesigner как то делается слой Layout'ом вкладки tab_3, или не попадаю, но писать текст приходится руками, QtCreator периодически эти 2 строки (centralWidget-set... и tab_3_set...) удаляет, так я в Fare быстрой клавишей восстанавливаю. Иначе часть элементов растягивается, а которые на вкладке - нет. А если будет два Layouta на вкладке tab_3 от Tab Widget, то как писать tab_3->setLayout? через запятую оба Layout'a? Или над ними Layout?
0
 Аватар для 4blK4blPblK
4 / 4 / 0
Регистрация: 01.10.2023
Сообщений: 44
26.01.2026, 19:59
jykm, покажите скриншот ожидаемого макета в Qt дизайнере или хоть в чем-то типа Paint-a, с пояснениями - где должно что лежать, меняться или быть одинаковым и тд и тп. А то все эти ваши: "вот я положил хреновину на фиговину, посыпал штуковинами - ниче не получается, может мне еще финтифлюшку туда добавить??" не дают понятия о сути вопроса.
0
 Аватар для Recrut_rf
388 / 333 / 65
Регистрация: 14.10.2014
Сообщений: 1,439
26.01.2026, 20:11
jykm, Вот я собрал и запустил приложуху - и что в ней не так?
Вложения
Тип файла: mp4 Запись_2026_01_26_21_04_31_843.mp4 (1.98 Мб, 8 просмотров)
0
0 / 0 / 0
Регистрация: 03.08.2017
Сообщений: 148
27.01.2026, 08:20  [ТС]
Проект tmp2.zip в Tab Widget правая половина вкладки не растягивается. Qt Creator склонен в ui_mainwindow.h удалять строку tab_3->setLayout(gridLayout); и centralWidget->setLayout(verticalLayout);
и допускается ли добавить строку tab_3->setLayout(gridLayout_2)? Не допускается -- я делаю над 2 Lauout'ами новый слой
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru