|
5 / 5 / 0
Регистрация: 01.03.2022
Сообщений: 145
|
|||||||||||
Масштабирование frame и текста внутри18.05.2022, 23:44. Показов 2275. Ответов 21
У каждой компании есть заметки, заметки хранятся в БД, в виде таблицы с двумя полями - id компании и собственно сам текст заметки. Нажимаешь на нужную компанию, её заметки подгружаются и выводятся в виде динамически созданных фреймов с кнопкой удаления и самим текстом. Вот код самого обновления:
Если вы обратили внимание, в коде обновления есть некая "формула", которая являлась временным решением, она подстраивала размер фрейма под размер текста. (результат видно на скрине выше, что занималась она этим, грубо говоря, некорректно). Мне нужно каким-то образом, при обновлении сразу выставлять фрейму идеальный размер. В коде используется шрифт "defaultFont", вот он:
Какими средствами можно подобную штуку реализовать?
0
|
|||||||||||
| 18.05.2022, 23:44 | |
|
Ответы с готовыми решениями:
21
картинка типа frame, c внутри картинкой
|
|
|
||
| 19.05.2022, 05:05 | ||
|
1
|
||
|
|
||||||
| 19.05.2022, 05:20 | ||||||
|
Вот набросал буквально за 2 минуты. Размер каждого фрейма, обрамляющего текст масштабируется в зависимости от размера самого текста. Конечно, зная точно задачу и немого поэкспериментировав, можно сделать намного больше, это всего лишь простой пример.
1
|
||||||
|
5 / 5 / 0
Регистрация: 01.03.2022
Сообщений: 145
|
|
| 19.05.2022, 11:48 [ТС] | |
|
insite2012, Большое спасибо. Если возьмусь переписать это на QtQuick, нужно будет переписывать интерфейс или можно участок кода QtQuick добавить в Layout, расположенный в обычной .ui форме?
0
|
|
|
|
||
| 19.05.2022, 12:04 | ||
|
0
|
||
|
|
|
| 19.05.2022, 17:03 | |
|
PrOsTo_NiK_, вот такую штуку, как вам скинул insite2012 можно сделать и без QML. Есть же лейауты. Завтра постараюсь скинуть код подобный, если не забуду. Не раз делал похожее:
Для каждой строки свой лейаут, в котором виджеты. И Эти строчные лейауты в основной лэйаут. Так если компоновать, то должно нормально получаться. А по реализации динамических виджетов в кутях... да, боль и жопа день чудесный. Тонна кода. Еще всё обязательно должно быть в скролл ареа.
0
|
|
|
5 / 5 / 0
Регистрация: 01.03.2022
Сообщений: 145
|
|
| 19.05.2022, 17:10 [ТС] | |
|
Джон Кофи, большое спасибо, буду ждать
Да, скролл ареа общая есть, заметок можно бесконечное множество делать, если Вы об этом. Я сейчас попытался сделать что-то вроде формулы для расчёта высоты фрейма, дабы там умещался textEdit. начал с того, если ограничить масштабирование окна. Даже с этим уже столкнулся с проблемами, если с помощью QFontMetrics узнать длину строки, то оказывается, что строка всегда разной длины выходит, хотя в самом textEdit она занимает одинаковое место. Не совсем понимаю, как это работает, но со строкой "WWWWWWWWWWWWWWW", занимающей максимальный размер строчки в textEdit, QFontMetrics выдает 450, а с такого же размера строкой, но с однообразными символами "l", уже 490. так и выходит, что все мои формулы ломаются в зависимости от введенного текста. Бывает, попаду и будет идеальный размер, а бывает сломаетсяи будет либо пустое пространство, либо же появится ползунок, так как текст не уместился
0
|
|
|
|
||
| 19.05.2022, 18:27 | ||
|
0
|
||
|
|
||||||
| 20.05.2022, 09:26 | ||||||
|
insite2012, я считаю, что ваш код лучше того, что я сейчас скину. Мне нравится и вашу мысль я поддерживаю. Сам просто на QML не писал никогда и выложу альтернативу. Автор сам решит, что ему больше подходит.
Добавлено через 2 минуты PrOsTo_NiK_, тут названия из проекта, не обращай внимания, суть поймешь, думаю.
1
|
||||||
|
2673 / 1335 / 480
Регистрация: 08.11.2016
Сообщений: 3,687
|
|
| 20.05.2022, 10:19 | |
|
Простите великодушно, вполне возможно что я не въехал в суть данного трэда от слова совсем, но кажется что задача элементарно решается с использованием QFormLayout и QLabel::setWordWrap(true)
1
|
|
|
|
||
| 20.05.2022, 10:33 | ||
|
1
|
||
|
5 / 5 / 0
Регистрация: 01.03.2022
Сообщений: 145
|
|
| 22.05.2022, 19:20 [ТС] | |
|
Annemesski, сделал всё, что Вы описали, результат тот же. Есть динамический фрейм, внутри него есть, предположим, qTextEdit, если текстэдит состоит из 2+ строк (либо перенос строки, либо же просто очень длинный текст, состоящий из нескольких строчек), то при добавлении текста в фрейм, фрейм остается того размера, что он и был, а в textEdit появляется полоса прокрутки, что не очень удобно.
0
|
|
|
5 / 5 / 0
Регистрация: 01.03.2022
Сообщений: 145
|
|||||||||||
| 22.05.2022, 20:16 [ТС] | |||||||||||
|
Annemesski,
Если же сделать QLabel, дать ему SetWordWrap(true), то все еще хуже, текст не переносится, а просто идет в одну бесконечную линию.
0
|
|||||||||||
|
|
|
| 22.05.2022, 22:19 | |
|
PrOsTo_NiK_, я вам давал совет, не мучайтесь, а переходите на QML. Ну не предназначены виджеты для произвольной кастомизации (хотя нет, конечно и на них можно сделать полностью все по своему, но придется полностью переписывать их перерисовку, что никак не радует). Так что если хотите полностью свой вид-берите и используйте QML, благо что он, собственно, не сказать что так уж сложен, базовые моменты поймете, а дальше есть доки, примеры, да масса всего для изучения.
0
|
|
|
5 / 5 / 0
Регистрация: 01.03.2022
Сообщений: 145
|
|
| 22.05.2022, 22:20 [ТС] | |
|
insite2012, да вроде смотришь, гуглишь, даже ответы читаешь, вроде все какое-то решение предлагают, кажущееся очень простым. А по итогу ничего не работает и, видимо, придется и правда написать на QML..
0
|
|
|
|
||
| 22.05.2022, 22:34 | ||
|
Вот ради сравнения, вот скрин. Два окна, с примерно одинаковым функционалом. Один из старого варианта программы, на виджетах. Он не разукрашивался. Второй на QML, и тоже не разукрашивался, все как есть. Что выглядит привлекательнее визуально, на ваш взгляд?
2
|
||
|
2673 / 1335 / 480
Регистрация: 08.11.2016
Сообщений: 3,687
|
||||||||||||||||||
| 23.05.2022, 10:32 | ||||||||||||||||||
Сообщение было отмечено PrOsTo_NiK_ как решение
Решение
Впрочем, как говориться: наше дело - предложить, Ваше дело - отказаться.
1
|
||||||||||||||||||
|
5 / 5 / 0
Регистрация: 01.03.2022
Сообщений: 145
|
|
| 23.05.2022, 10:53 [ТС] | |
|
insite2012, разумеется, первый вариант намного приятнее на вид. В целом, красивый внешний вид можно попытаться получить с помощью QSS, но Вы правы в том, что виджеты очень ограниченны, порой эта ограниченность мешала, приходилось довольствоваться тем, что есть. Я Вас понял, возможно именно Вы стали толчком для начала изучения QML, спасибо
![]() Добавлено через 2 минуты Annemesski, да, с QLabel текст переносится если есть пробелы, я это не учёл. Спасибо за Ваш вариант, временно оставлю его, но по наводке insite2012 постараюсь познать азы QML, возможно в будущем сделаю всё это "покрасивше". Большое спасибо за уделенное время
0
|
|
|
5 / 5 / 0
Регистрация: 01.03.2022
Сообщений: 145
|
|
| 23.05.2022, 11:21 [ТС] | |
|
insite2012, вот, сейчас всё написано чисто на виджетах, выглядит не так отвратно, как бы оно выглядело без отсутствия QSS, но ограниченность всё же видна в некоторых моментах
![]()
1
|
|
| 23.05.2022, 11:21 | |
|
Помогаю со студенческими работами здесь
20
Не растягивается grid внутри canvas frame Изменить стиль внутри frame через определенное время Масштабирование изображения внутри ячейки таблицы Настройка плиточного интерфейса. Масштабирование изображения внутри плитки
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|