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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QFont и UI  (Прочитано 5483 раз)
spectre71
Гость
« : Август 18, 2009, 12:57 »

Проблема следующая.
Делаю главное окно(достаточно сложное) и кучу диалогов в дизайнере.
Далаю все это на XP.
Комиплю, запускаю, все ОК.
Далее собираю на Mac.
Запускаю. Все фонты съехали, размеры некоторых мизерные!
Открываю ui дизайнером на XP, вижу фонт "MS Shell Dlg 2"
Открываю ui дизайнером на Mac, вижу фонт "PC.." - всместо точек какие-то иероглифы
Понятно что фонта "MS Shell Dlg 2" под Mac нет, и подставляется что попало.
Как этого избежать при работе c виджетами в дизайнере?
Записан
boobsik
Гость
« Ответ #1 : Август 18, 2009, 15:20 »

QStyle, QMotifStyle, QWindowsStyle, QCleanlooksStyle, QPlastiqueStyle, and QWindowsXPStyle
Записан
spectre71
Гость
« Ответ #2 : Август 18, 2009, 21:47 »

QStyle, QMotifStyle, QWindowsStyle, QCleanlooksStyle, QPlastiqueStyle, and QWindowsXPStyle
Очень подробный ответ, спасибо Улыбающийся
Почитай правила форума, иногда полезно! Улыбающийся
Записан
boobsik
Гость
« Ответ #3 : Август 18, 2009, 22:10 »

шаг 1: создаешь свой класс от абстрактного QStyle или используешь из уже имеющихся вариантов
шаг 2:
вызываешь конструктор своего класса в функцие main(..)
шаг 3:
используешь метод void QApplication::setStyle ( QStyle * style )  для своего апликейшена
шаг 4:
отмечаешь с друзьями  Веселый
Записан
Rcus
Гость
« Ответ #4 : Август 18, 2009, 22:16 »

Самый концептуально простой способ это не трогать свойство Font у виджета, тогда оно будет ставиться по-умолчанию, а если все-таки хочется, то надо рассказать что именно требуется (например полностью заменять шрифты или изменять размер у определенного класса). У меня проблема единого вида виджетов на устройстве и дизайнерских сборках решается включением файла шрифта в ресурсы и подгрузкой при старте
Записан
boobsik
Гость
« Ответ #5 : Август 18, 2009, 22:19 »

а как же аутентичный хакерский стайл для своих програмулин?))
Записан
Rcus
Гость
« Ответ #6 : Август 18, 2009, 22:39 »

а как же аутентичный хакерский стайл для своих програмулин?))
Это вы мне? У меня целевая платформа не десктоп где стиль задается оболочкой, а встраиваемое устройство, стиль определяет дизайнер проекта.

Похожая проблема с разным набором шрифтов на разных системах уже обсуждалась в http://www.prog.org.ru/topic_8398_0.html
Записан
spectre71
Гость
« Ответ #7 : Август 18, 2009, 22:50 »

Самый концептуально простой способ это не трогать свойство Font у виджета, тогда оно будет ставиться по-умолчанию, а если все-таки хочется, то надо рассказать что именно требуется (например полностью заменять шрифты или изменять размер у определенного класса).
Имеенно так!
Сегодня разбирался, в дизайнере поставил font "bold" неким widgets, что привело к явному определению font со всеми его атрибутами. На мой взгляд небольшая недоработка QT.
Решение прстое:
- НЕ МЕНЯЙТЕ атрибуты фонта в дизайнере!
- Если требуется сменить атрибуты, меняйте их в, например в конструкторе виджета.
- Лучше не изменять размер фонта(сильно зависит от платформы)!
- Когда меняете атрибуты, меняйте только те, которые требуются, например в моем случае:

 
Код
C++ (Qt)
 ui.setupUi(this);
 ...
 QFont font = ui.LeftPageControl->font();
 font.setBold(true);
 ui.LeftPageControl->setFont(font );
 ui.TopPageControl->setFont(font );
 ui.BottomPageControl->setFont(font );
 ui.RightPageControl->setFont(font );

Записан
spectre71
Гость
« Ответ #8 : Август 18, 2009, 22:54 »

У меня проблема единого вида виджетов на устройстве и дизайнерских сборках решается включением файла шрифта в ресурсы и подгрузкой при старте

Если можно, поподробнее.
Записан
Rcus
Гость
« Ответ #9 : Август 18, 2009, 22:59 »

qrc, Q_INIT_RESOURCE, QFontDatabase::addApplicationFont, QApplication::setFont(QFont("MyFontName"), "MyBaseClass")

примерно так.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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