Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: spectre71 от Август 18, 2009, 12:57



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


Название: Re: QFont и UI
Отправлено: boobsik от Август 18, 2009, 15:20
QStyle, QMotifStyle, QWindowsStyle, QCleanlooksStyle, QPlastiqueStyle, and QWindowsXPStyle


Название: Re: QFont и UI
Отправлено: spectre71 от Август 18, 2009, 21:47
QStyle, QMotifStyle, QWindowsStyle, QCleanlooksStyle, QPlastiqueStyle, and QWindowsXPStyle
Очень подробный ответ, спасибо :)
Почитай правила форума, иногда полезно! :)


Название: Re: QFont и UI
Отправлено: boobsik от Август 18, 2009, 22:10
шаг 1: создаешь свой класс от абстрактного QStyle или используешь из уже имеющихся вариантов
шаг 2:
вызываешь конструктор своего класса в функцие main(..)
шаг 3:
используешь метод void QApplication::setStyle ( QStyle * style )  для своего апликейшена
шаг 4:
отмечаешь с друзьями  :D


Название: Re: QFont и UI
Отправлено: Rcus от Август 18, 2009, 22:16
Самый концептуально простой способ это не трогать свойство Font у виджета, тогда оно будет ставиться по-умолчанию, а если все-таки хочется, то надо рассказать что именно требуется (например полностью заменять шрифты или изменять размер у определенного класса). У меня проблема единого вида виджетов на устройстве и дизайнерских сборках решается включением файла шрифта в ресурсы и подгрузкой при старте


Название: Re: QFont и UI
Отправлено: boobsik от Август 18, 2009, 22:19
а как же аутентичный хакерский стайл для своих програмулин?))


Название: Re: QFont и UI
Отправлено: Rcus от Август 18, 2009, 22:39
а как же аутентичный хакерский стайл для своих програмулин?))
Это вы мне? У меня целевая платформа не десктоп где стиль задается оболочкой, а встраиваемое устройство, стиль определяет дизайнер проекта.

Похожая проблема с разным набором шрифтов на разных системах уже обсуждалась в http://www.prog.org.ru/topic_8398_0.html


Название: Re: QFont и UI
Отправлено: spectre71 от Август 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 );



Название: Re: QFont и UI
Отправлено: spectre71 от Август 18, 2009, 22:54
У меня проблема единого вида виджетов на устройстве и дизайнерских сборках решается включением файла шрифта в ресурсы и подгрузкой при старте

Если можно, поподробнее.


Название: Re: QFont и UI
Отправлено: Rcus от Август 18, 2009, 22:59
qrc, Q_INIT_RESOURCE, QFontDatabase::addApplicationFont, QApplication::setFont(QFont("MyFontName"), "MyBaseClass")

примерно так.