Название: Как зафиксировать размер шрифта в диалоге? Отправлено: sk_alex от Август 07, 2006, 15:41 Доброго времени суток. Прошу посоветовать, как можно решить следующую проблему.
Платформа: Win2000 + Visual C++ 6.0 + Qt 3.3.3 + Qwt Проблема: Написал программу с графическим интерфейсом, у меня на компе все работает. Однако при попытке запустить эту же exe-шку на другом компе "плывут" настройки шрифта в диалоговых окнах, на кнопках и т.д. Шрифт становится большим и надпись не умещается в заданные размеры. Информация про комп, на котором некорректно работает: Win XP, Qt не стоит, в настройках экрана (Панель управления - Свойства - Параметры - Дополнительно - Общие - Масштаб) стоит установка "Крупный размер (120 точек на дюйм)". Если поставить "Обычный размер (96 точек на дюйм)" - все работает правильно. Как делалось: Диалог рисовался при помощи Qt Designer'а. В свойствах диалога указывался фонт MS Sans Serif размером 10. При трансляции ui-файла получались такие строчки: QFont f( font() ); f.setFamily( "MS Sans Serif" ); f.setPointSize( 10 ); setFont( f ); Вопрос. Как зафиксировать размер шрифта вне зависимости от системных настроек данной винды? Требовать от каждого пользователя использовать только определенный режим размеров системных шрифтов никак нельзя. Заранее спасибо всем откликнувшимся. Название: Как зафиксировать размер шрифта в диалоге? Отправлено: Racheengel от Август 08, 2006, 00:04 а размер диалога фиксированный?
надо политиками делать Название: Как зафиксировать размер шрифта в диалоге? Отправлено: sk_alex от Август 08, 2006, 10:20 Размер диалога фиксированный. То есть, максимальный и минимальный размеры установлены в одно значение (как иначе сделать фиксированный размер диалога, я просто не знаю).
Установил sizePolicy на диалог и на все компоненты диалога в состояние hSizeType: Fixed vSizeType: Fixed horizontalStretch: 0 verticalStretch: 0 Не помогло :-( Да, важное замечание. Судя по тому, что написано в документации по политикам, они ориентированы на работу с лейаутами. А если я их (в смысле лейауты) не использую вовсе? Update: Дальнейшие эксперименты. Попробовал загнать все элементы управления в лейаут (ограничив максимальные размеры каждого элемента управления). По-прежнему никаких изменений в нужную мне сторону. :-( Название: Как зафиксировать размер шрифта в диалоге? Отправлено: Racheengel от Август 08, 2006, 13:23 попробуй отключить фиксированный размер диалога - поставь ему политику на размер. Скорее всего из=за этого проблема.
Название: Как зафиксировать размер шрифта в диалоге? Отправлено: sk_alex от Август 08, 2006, 14:42 Прошу прощения, не понял, что Вы имеете в виду. Фиксированного размера я добился только путем указания максимального и минимального значения размера диалога равными необходимым цифрам. Каких-либо флажков, отвечающих за то, чтобы диалог не изменял свой размер, я не нашел. Попытка разрешить диалогу изменять свой размер привела только к тому, что стало возможно менять размер диалогового окна мышкой. Проблема со шрифтами, как была, так и осталась. :-(
Насколько я понимаю, если идти по пути задания политик и т.д., то придется полностью отказываться от фиксированных размеров окон. Делать динамический размер окна, размещать компоненты управления и динамически управлять их размерами при помощи лэйаутов. В таком случае при изменении шрифта, автоматически увеличится размер компонента, а сам диалог по идее должен раздвинуться. Однако такой подход в данном случае будет очень неудобен, ибо приводит к расползанию диалоговых окон и довольно свободному размещению на этих окнах компонентов. Требуется же добиться именно компактности размещения элементов управления и фиксированных шрифтов. Расползание диалоговых окон (некоторые из которых и так большие) может привести к тому, что они будут слишком большими. А в требованиях к программе имеет место быть такой пункт, как возможность работы при разрешении 640x480. Поэтому нужно не пытаться подстроиться под пользователя, желающего видеть крупные буквы, а именно зафиксировать шрифт и игнорировать системные настройки. |