Russian Qt Forum
Сентябрь 22, 2024, 02:15
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Смена/увеличение шрифта
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Смена/увеличение шрифта (Прочитано 11143 раз)
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Смена/увеличение шрифта
«
:
Январь 20, 2014, 20:04 »
Добрый день
Портируемое нативное приложение использует размер шрифта 9, что явно мало, возникает необходимость хотя бы 12. Ну "рабочие окна" придется подгонять, т.к. там все рисуется руками, контролов мало или вообще нет. А вот что делать с диалогами? Они хранятся в нативных ресурсах, т.е. какие-то автоматы/пулеметы возможны. Но что и как "масштабить"? Изначально никаких растяжек/прилипалок/layot'ов нет. Как бы Вы поступили? (диалогов реально много, больше сотни)
Спасибо
Записан
carrygun
Гость
Re: Смена/увеличение шрифта
«
Ответ #1 :
Январь 21, 2014, 04:33 »
Из описания немного не понятно, в чем у Вас конкретно проблема. Вы когда меняете размер шрифта у Вас в диалогах чтото начинает разъезжаться?
Попробовал следующее:
Код
C++ (Qt)
QFont
f
=
a.
font
(
)
;
f.
setPixelSize
(
f.
pixelSize
(
)
+
45
)
;
a.
setFont
(
f
)
;
Ну а далее простой вызов QMessageBox::information, результат:
http://puu.sh/6smgA.png
(лень заливать, и как нормально вставлять картинки по ссылкам?).
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Смена/увеличение шрифта
«
Ответ #2 :
Январь 21, 2014, 11:17 »
Цитата: carrygun от Январь 21, 2014, 04:33
Из описания немного не понятно, в чем у Вас конкретно проблема. Вы когда меняете размер шрифта у Вас в диалогах чтото начинает разъезжаться?
Не что-то, а многое. Диалоги-то нативные и никаких лайаутов не имеют. На текущий момент я могу загрузить их как "Qt окна" (один к одному с шрифтом 9).
[/offtop]
Почти в каждом своем посте Вы сообщаете что Вам чего-то "лень" - но это совсем не симптом талантливости
Записан
Figaro
Гость
OFF
«
Ответ #3 :
Январь 21, 2014, 12:58 »
Симптон знания
Записан
carrygun
Гость
Re: Смена/увеличение шрифта
«
Ответ #4 :
Январь 22, 2014, 04:39 »
Можно хоть посмотреть скриншоты? Какие нативные диалоги ломаются? ОС какая?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Смена/увеличение шрифта
«
Ответ #5 :
Январь 22, 2014, 11:31 »
Цитата: carrygun от Январь 22, 2014, 04:39
Можно хоть посмотреть скриншоты? Какие нативные диалоги ломаются? ОС какая?
Простейший пример поломки в аттаче. Скажите, что изменится если я сообщу Вам сколько % диалогов сломано? По-любому "много". И что в данном случае зависит от ОС? Нет идей/мыслей - нормально, у меня их тоже пока нет, но зачем месить по-пустому тратя свое и чужое время на "наводящие"?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Смена/увеличение шрифта
«
Ответ #6 :
Январь 30, 2014, 14:52 »
Ну вот, и никто ничего мне не "рекомендует", не говоря уже о "настоятельно"
А как делается UI без Qt? Из нативных ресурсов, есть редакторы, хоть на том же Вындоуз. Здесь то же самое, непринципиальная разница в редакторе. Задача перегона с бОльшим шрифтом довольно банальна.
Вариант 0 (ноль): в редакторе увеличить размер шрифта и переделать все руками. Однако диалогов более сотни, и есть такие хорошие (айтемов эдак 400) - понятно желание хоть как-то облегчить этот процесс.
Вариант 1: механически увеличить все айтемы (и сами диалоги) по формуле x = x * 4 / 3 (под бОльший шрифт). Тут быстро выясняется что не все увеличения хороши, напр
- картинки задуманы 1:1, скалить их ничего хорошего не выходит
- сами диалоги, если заполнены жиденько - резайз только портит
- эдиты, листбоксы - по ширине скалить не видно особого смысла
Как же "конвертнуть" по умному?
Спасибо
Записан
Bepec
Гость
Re: Смена/увеличение шрифта
«
Ответ #7 :
Январь 30, 2014, 14:59 »
Никак.
Это задача для интеллекта, а не для машинной обработки.
Ведь конечный результат должен удовлетворять пользователя
Так что вперёд по варианту 0.
PS а уже там можно упростить однотипные операции.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Смена/увеличение шрифта
«
Ответ #8 :
Март 21, 2014, 12:32 »
Ладно, не все вопросы имеют быстрые ответы, попробуем еще раз с картинками (аттач)
Пользователю не нужно все это сайзить, нужна только возможность увеличить шрифт до 12. Сейчас все сделано в нативном редакторе без Qt, никаких layout'ов нет. Уже с шрифтом 10 начнутся перехлесты, с 11 тем более.
Очевидное предложение "давайте все перенесем в дызайнер, там сделаем лайауты как положено". Это как-то не вдохновляет хотя бы потому что картинка = максимум 5% всего лишь одного диалога из многих. Да и не очень очевидно как делать это лайаутами. Необходимость вставки множества виджетов-подкладок меня всегда раздражала.
Какие есть предложения?
Спасибо
Записан
Bepec
Гость
Re: Смена/увеличение шрифта
«
Ответ #9 :
Март 21, 2014, 14:28 »
Ну если по простому, то разделим проблемы.
1) шрифт.
2) вылезание шрифта за пределы полей.
Что тут можно сделать?
1) увеличить размер полей под максимальный шрифт. (чтобы при максимальном размере не вылезало)
2) центровать надписи.
Но это сработает, если у вас поля имеют пространство под расширение, как на приведённом у вас рисунке.
PS но на мой взгляд тут поможет только полный передел собственности. Если без лайоутов вы себе мозг вынесете учётом пересечения полей и их перестановку с новым размером. Гораздо проще разместить всё в дизайнере с полями.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Смена/увеличение шрифта
«
Ответ #10 :
Март 21, 2014, 18:00 »
Цитата: Bepec от Март 21, 2014, 14:28
Но это сработает, если у вас поля имеют пространство под расширение, как на приведённом у вас рисунке.
На приведенном не имеют. Напр "Amount", "Use Default Color", "Opaque + Transparent" и др. будут пересекать(ся). Настроить все на макс размер 12 - явно не дело, так UI будет напоминать выжженную пустыню при мелком шрифте. Напр тот же "Amount" окажется далеко от слайдера который к нему относится. Ну и сегодня 12 - завтра хз, может 13, и опять все по новой
Цитата: Bepec от Март 21, 2014, 14:28
Гораздо проще разместить всё в дизайнере с полями.
Мне почему-то не кажется это простым. Хотя вот Вам UI файл, попробуйте
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Смена/увеличение шрифта
«
Ответ #11 :
Март 21, 2014, 18:09 »
Если диалогов больше 100 и они сложные, можно написать конвертер из нативного формата в формат Qt ui. После конвертации координаты всех виджетов будут абсолютные.
А дальше "программа" минимум, запретить диалогам менять размер и ничего в ui не трогать, или, как максимум, загружать дальше диалоги в дизайнер и руками размещать контролы в layout. Это будет гораздо проще, чем делать все с нуля.
«
Последнее редактирование: Март 21, 2014, 18:33 от Old
»
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Смена/увеличение шрифта
«
Ответ #12 :
Март 21, 2014, 18:59 »
Цитата: Old от Март 21, 2014, 18:09
Если диалогов больше 100 и они сложные, можно написать конвертер из нативного формата в формат Qt ui. После конвертации координаты всех виджетов будут абсолютные.
А дальше "программа" минимум, запретить диалогам менять размер и ничего в ui не трогать, или, как максимум, загружать дальше диалоги в дизайнер и руками размещать контролы в layout. Это будет гораздо проще, чем делать все с нуля.
Я уже могу грузить диалоги из нативных ресурсов, они появляются как Qt окна/контролы. Для создания UI файлов можно воспользоваться QFormBuilder::save.
А вот что дальше? Если ничего не трогать, то я имею то же что и сейчас - шрифт 9 и все. Изменить что-то в дизайнере - и как воспользоваться измененным? Загрузчик нативных ресурсов делает массу всего и осведомлен о всех кастомных контролах, а QFormBuilder (или сгенерированный код) нет.
Вообще нужен ли здесь дизайнер, лайауты и.т.п.? Это вроде бы правильно только потому что "так делают", но годится ли это для данной конкретной задачи? Напр воспроизвести приведенный маленький фрагмент с лайаутами в дизайнере не так уж просто. Как насчет велика?
Записан
Bepec
Гость
Re: Смена/увеличение шрифта
«
Ответ #13 :
Март 21, 2014, 19:08 »
Тут нет простого выхода.
Варианты:
1) переделать под Qt и ваш загрузчик нативных ресурсов и всё иже с ним. В результате это будет разовая работа, после которой подобные действия будут в разы легче.
2) сделать велосипед с каким то умно-хитрым алгоритмом. Разовая работа, вот только нужно его разработать, оттестировать, исправить страшные баги и вновь тестировать. И вот только после этого его применить и найти недоработки и снова процесс разработки. (утрирую, но так чаще всего и бывает).
3) переделать текущие формы в старом диалоге старыми нативными средствами, али ещё как. Тоже разовая работа, но если что-то в дальнейшем нужно, придётся начинать всё с начала.
PS
https://www.dropbox.com/s/w22oogwq7zwbjkl/%D0%A1%D0%BA%D1%80%D0%B8%D0%BD%D1%88%D0%BE%D1%82%202014-03-21%2020.07.29.png
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Смена/увеличение шрифта
«
Ответ #14 :
Март 21, 2014, 19:11 »
Цитата: Igors от Март 21, 2014, 18:59
Загрузчик нативных ресурсов делает массу всего и осведомлен о всех кастомных контролах, а QFormBuilder (или сгенерированный код) нет.
А, так вы не хотите их переделывать в Qt-шные, а хотите использовать нативные? А в них все в абсолютных координатах?
Цитата: Igors от Март 21, 2014, 18:59
Это вроде бы правильно только потому что "так делают"
Вы как школьник сейчас разговариваете: вроде/кто-то делает/правильно/неправильно.
Если ответы на мои вопросы из предыдущего абзаца "да", то не верно.
Цитата: Igors от Март 21, 2014, 18:59
Как насчет велика?
А что вы называете великом? Вы хотите написать полноценную систему для позиционирования контролов по диалогу при изменении размеров диалога/фонтов? Или так, что бы с 12 фонтом заработало и ладно?
«
Последнее редактирование: Март 21, 2014, 21:33 от Old
»
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...