Russian Qt Forum
Сентябрь 22, 2024, 02:17 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Смена/увеличение шрифта  (Прочитано 11145 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Январь 20, 2014, 20:04 »

Добрый день

Портируемое нативное приложение использует размер шрифта 9, что явно мало, возникает необходимость хотя бы 12. Ну "рабочие окна" придется подгонять, т.к. там все рисуется руками, контролов мало или вообще нет. А вот что делать с диалогами? Они хранятся в нативных ресурсах, т.е. какие-то автоматы/пулеметы возможны. Но что и как "масштабить"? Изначально никаких растяжек/прилипалок/layot'ов нет. Как бы Вы поступили? (диалогов реально много, больше сотни)

Спасибо
Записан
carrygun
Гость
« Ответ #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 Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Январь 21, 2014, 11:17 »

Из описания немного не понятно, в чем у Вас конкретно проблема. Вы когда меняете размер шрифта у Вас в диалогах чтото начинает разъезжаться?
Не что-то, а многое. Диалоги-то нативные и никаких лайаутов не имеют. На текущий момент я могу загрузить их как "Qt окна" (один к одному с шрифтом 9).

[/offtop]
Почти в каждом своем посте Вы сообщаете что Вам чего-то "лень" - но это совсем не симптом талантливости  Улыбающийся
Записан
Figaro
Гость
OFF
« Ответ #3 : Январь 21, 2014, 12:58 »

Симптон знания
Записан
carrygun
Гость
« Ответ #4 : Январь 22, 2014, 04:39 »

Можно хоть посмотреть скриншоты? Какие нативные диалоги ломаются? ОС какая?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Январь 22, 2014, 11:31 »

Можно хоть посмотреть скриншоты? Какие нативные диалоги ломаются? ОС какая?
Простейший пример поломки в аттаче. Скажите, что изменится если я сообщу Вам сколько % диалогов сломано? По-любому "много". И что в данном случае зависит от ОС? Нет идей/мыслей - нормально, у меня их тоже пока нет, но зачем месить по-пустому тратя свое и чужое время на "наводящие"?


Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Январь 30, 2014, 14:52 »

Ну вот, и никто ничего мне не "рекомендует", не говоря уже о "настоятельно" Улыбающийся  А как делается UI без Qt? Из нативных ресурсов, есть редакторы, хоть на том же Вындоуз. Здесь то же самое, непринципиальная разница в редакторе. Задача перегона с бОльшим шрифтом довольно банальна.

Вариант 0 (ноль): в редакторе увеличить размер шрифта и переделать все руками. Однако диалогов более сотни, и есть такие хорошие (айтемов эдак 400) - понятно желание хоть как-то облегчить этот процесс.

Вариант 1: механически увеличить все айтемы (и сами диалоги) по формуле x = x * 4 / 3 (под бОльший шрифт). Тут быстро выясняется что не все увеличения хороши, напр

- картинки задуманы 1:1, скалить их ничего хорошего не выходит 
- сами диалоги, если заполнены жиденько - резайз только портит
- эдиты, листбоксы - по ширине скалить не видно особого смысла

Как же "конвертнуть" по умному?

Спасибо
Записан
Bepec
Гость
« Ответ #7 : Январь 30, 2014, 14:59 »

Никак.
Это задача для интеллекта, а не для машинной обработки.
Ведь конечный результат должен удовлетворять пользователя Улыбающийся

Так что вперёд по варианту 0.

PS а уже там можно упростить однотипные операции.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #8 : Март 21, 2014, 12:32 »

Ладно, не все вопросы имеют быстрые ответы, попробуем еще раз с картинками (аттач)
Пользователю не нужно все это сайзить, нужна только возможность увеличить шрифт до 12. Сейчас все сделано в нативном редакторе без Qt, никаких layout'ов нет. Уже с шрифтом 10 начнутся перехлесты, с 11 тем более.

Очевидное предложение "давайте все перенесем в дызайнер, там сделаем лайауты как положено". Это как-то не вдохновляет хотя бы потому что картинка = максимум 5% всего лишь одного диалога из многих. Да и не очень очевидно как делать это лайаутами. Необходимость вставки множества виджетов-подкладок меня всегда раздражала.

Какие есть предложения?
Спасибо
Записан
Bepec
Гость
« Ответ #9 : Март 21, 2014, 14:28 »

Ну если по простому, то разделим проблемы.
1) шрифт.
2) вылезание шрифта за пределы полей.

Что тут можно сделать?
1) увеличить размер полей под максимальный  шрифт. (чтобы при максимальном размере не вылезало)
2) центровать надписи.

Но это сработает, если у вас поля имеют пространство под расширение, как на приведённом у вас рисунке.

PS но на мой взгляд тут поможет только полный передел собственности. Если без лайоутов вы себе мозг вынесете учётом пересечения полей и их перестановку с новым размером. Гораздо проще разместить всё в дизайнере с полями.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #10 : Март 21, 2014, 18:00 »

Но это сработает, если у вас поля имеют пространство под расширение, как на приведённом у вас рисунке.
На приведенном не имеют. Напр "Amount", "Use Default Color", "Opaque + Transparent" и др. будут пересекать(ся). Настроить все на макс размер 12 - явно не дело, так UI будет напоминать выжженную пустыню при мелком шрифте. Напр тот же "Amount" окажется далеко от слайдера который к нему относится. Ну и сегодня 12 - завтра хз, может 13, и опять все по новой

Гораздо проще разместить всё в дизайнере с полями.
Мне почему-то не кажется это простым. Хотя вот Вам UI файл, попробуйте
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #11 : Март 21, 2014, 18:09 »

Если диалогов больше 100 и они сложные, можно написать конвертер из нативного формата в формат Qt ui. После конвертации координаты всех виджетов будут абсолютные.
А дальше "программа" минимум, запретить диалогам менять размер и ничего в ui не трогать, или, как максимум, загружать дальше диалоги в дизайнер и руками размещать контролы в layout. Это будет гораздо проще, чем делать все с нуля.
« Последнее редактирование: Март 21, 2014, 18:33 от Old » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #12 : Март 21, 2014, 18:59 »

Если диалогов больше 100 и они сложные, можно написать конвертер из нативного формата в формат Qt ui. После конвертации координаты всех виджетов будут абсолютные.
А дальше "программа" минимум, запретить диалогам менять размер и ничего в ui не трогать, или, как максимум, загружать дальше диалоги в дизайнер и руками размещать контролы в layout. Это будет гораздо проще, чем делать все с нуля.
Я уже могу грузить диалоги из нативных ресурсов, они появляются как Qt окна/контролы. Для создания UI файлов можно воспользоваться QFormBuilder::save.

А вот что дальше? Если ничего не трогать, то я имею то же что и сейчас - шрифт 9 и все. Изменить что-то в дизайнере - и как воспользоваться измененным? Загрузчик нативных ресурсов делает массу всего и осведомлен о всех кастомных контролах, а QFormBuilder (или сгенерированный код) нет. 

Вообще нужен ли здесь дизайнер, лайауты  и.т.п.?  Это вроде бы правильно только потому что "так делают", но годится ли это для данной конкретной задачи? Напр воспроизвести приведенный маленький фрагмент с лайаутами в дизайнере не так уж просто. Как насчет велика?  Улыбающийся
Записан
Bepec
Гость
« Ответ #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 Offline

Сообщений: 4350



Просмотр профиля
« Ответ #14 : Март 21, 2014, 19:11 »

Загрузчик нативных ресурсов делает массу всего и осведомлен о всех кастомных контролах, а QFormBuilder (или сгенерированный код) нет.  
А, так вы не хотите их переделывать в Qt-шные, а хотите использовать нативные? А в них все в абсолютных координатах?

Это вроде бы правильно только потому что "так делают"
Вы как школьник сейчас разговариваете: вроде/кто-то делает/правильно/неправильно. Улыбающийся
Если ответы на мои вопросы из предыдущего абзаца "да", то не верно.

Как насчет велика?  Улыбающийся
А что вы называете великом? Вы хотите написать полноценную систему для позиционирования контролов по диалогу при изменении размеров диалога/фонтов? Или так, что бы с 12 фонтом заработало и ладно?
« Последнее редактирование: Март 21, 2014, 21:33 от Old » Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.151 секунд. Запросов: 22.