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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как зафиксировать размер шрифта в диалоге?  (Прочитано 5277 раз)
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
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #1 : Август 08, 2006, 00:04 »

а размер диалога фиксированный?
надо политиками делать
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
sk_alex
Гость
« Ответ #2 : Август 08, 2006, 10:20 »

Размер диалога фиксированный. То есть, максимальный и минимальный размеры установлены в одно значение (как иначе сделать фиксированный размер диалога, я просто не знаю).

Установил sizePolicy на диалог и на все компоненты диалога в состояние
hSizeType: Fixed
vSizeType: Fixed
horizontalStretch: 0
verticalStretch: 0

Не помогло :-(

Да, важное замечание. Судя по тому, что написано в документации по политикам, они ориентированы на работу с лейаутами. А если я их (в смысле лейауты) не использую вовсе?

Update: Дальнейшие эксперименты. Попробовал загнать все элементы управления в лейаут (ограничив максимальные размеры каждого элемента управления). По-прежнему никаких изменений в нужную мне сторону. :-(
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #3 : Август 08, 2006, 13:23 »

попробуй отключить фиксированный размер диалога - поставь ему политику на размер. Скорее всего из=за этого проблема.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
sk_alex
Гость
« Ответ #4 : Август 08, 2006, 14:42 »

Прошу прощения, не понял, что Вы имеете в виду. Фиксированного размера я добился только путем указания максимального и минимального значения размера диалога равными необходимым цифрам. Каких-либо флажков, отвечающих за то, чтобы диалог не изменял свой размер, я не нашел. Попытка разрешить диалогу изменять свой размер привела только к тому, что стало возможно менять размер диалогового окна мышкой. Проблема со шрифтами, как была, так и осталась. :-(

Насколько я понимаю, если идти по пути задания политик и т.д., то придется полностью отказываться от фиксированных размеров окон. Делать динамический размер окна, размещать компоненты управления и динамически управлять их размерами при помощи лэйаутов. В таком случае при изменении шрифта, автоматически увеличится размер компонента, а сам диалог по идее должен раздвинуться.

Однако такой подход в данном случае будет очень неудобен, ибо приводит к расползанию диалоговых окон и довольно свободному размещению на этих окнах компонентов. Требуется же добиться именно компактности размещения элементов управления и фиксированных шрифтов. Расползание диалоговых окон (некоторые из которых и так большие) может привести к тому, что они будут слишком большими. А в требованиях к программе имеет место быть такой пункт, как возможность работы при разрешении 640x480. Поэтому нужно не пытаться подстроиться под пользователя, желающего видеть крупные буквы, а именно зафиксировать шрифт и игнорировать системные настройки.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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