Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt4]проблемы со шрифтами, установить шрифт в QTextEdit 
V
    Опции темы
anatox91
Дата 22.5.2008, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: нет
Всего: 13



собственно есть объект QTextEdit. В нем надо установить свой шрифт, в моем примере - CourierStd. Сам шрифт у меня имеется, лежит в системной папке со всеми остальными шрифтами. Но когда я устанавливаю шрифт 
Код

textEdit->setFontFamily("CourierStd");
  
то это ничего не меняет. Шрифт в текст едите остается по умолчанию. В связи с чем вопрос - как можно установить в этом виджете свой шрифт(причем желательно сделать так, чтобы этот шрифт шел вместе с программой, т.е. в каком-нибудь файле ресурсов, и шрифт в виджете не зависел от того, установлен он в системе или нет)?
заранее большое спасибо!

Это сообщение отредактировал(а) anatox91 - 22.5.2008, 19:03


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
Droll
Дата 22.5.2008, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 10.11.2004

Репутация: 1
Всего: 3



Функция setFontFamily() устанавливает шрифт не для всего виджета QTextEdit, а только для текущего формата. Используйте функцию setFont()

Пример:
Код

#include <QtGui>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

     QTextEdit qe;
     // Устанавливаем шрифт
     qe.setFont(QFont("CourierStd"));
     qe.show();

     return app.exec();
}


Это сообщение отредактировал(а) Droll - 22.5.2008, 19:59
PM   Вверх
anatox91
Дата 22.5.2008, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: нет
Всего: 13



пробовал, тоже самое...
но почему-то когда написал просто Courier
Код

textEdit.setFont(QFont("Courier"));

то поменялся шрифт...

Добавлено через 46 секунд
но больше всего меня интересует это
Цитата

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



--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
Droll
Дата 22.5.2008, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 10.11.2004

Репутация: 1
Всего: 3



Цитата(anatox91 @  22.5.2008,  20:08 Найти цитируемый пост)
пробовал, тоже самое...

Это потому, что шрифт на самом деле называется не CourierStd. Если шрифт действительно установлен, то запустите какое-нибудь офисное приложение (OpenOffice.org Writer, например) и посмотрите полное название шрифта (включая пробелы, если они есть) в списке шрифтов.

Цитата(anatox91 @  22.5.2008,  20:08 Найти цитируемый пост)
сделать так, чтобы этот шрифт шел вместе с программой, т.е. в каком-нибудь файле ресурсов, и шрифт в виджете не зависел от того, установлен он в системе или нет

Как это сделать не знаю, но предлагаю копать в сторону QPF2 (Qt Prerendered Font) + makeqpf. Судя по описанию, это не масштабируемый платформонезависимый формат шрифта.
PM   Вверх
anatox91
Дата 22.5.2008, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: нет
Всего: 13



Цитата(Droll @  22.5.2008,  20:20 Найти цитируемый пост)
Это потому, что шрифт на самом деле называется не CourierStd. Если шрифт действительно установлен, то запустите какое-нибудь офисное приложение (OpenOffice.org Writer, например) и посмотрите полное название шрифта (включая пробелы, если они есть) в списке шрифтов.

т.е. Qt берет шрифты из стандартной системной папки со шрифтами?

Добавлено @ 20:42
посмотрел - действительно щрифт почему-то при копировании переименовался в CourierStd(OpenType), а в фотошопе вообще называется Courier Std (с пробелом, в смысле)

Это сообщение отредактировал(а) anatox91 - 23.5.2008, 12:49


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
pilotnet
Дата 23.5.2008, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 22.4.2008

Репутация: нет
Всего: нет



anatox91,  qt берет шрифты из X 
те из папки или получает от сервера xfs
можно в скипте запуска программы добавлять путь до папки со своими шрифтами
xset  +fp /путь/до_папки
в той папке должен лежать файл fonts.dir 
сгенеренный программой mkfontdir или    mkfontscale точно я непомню
PM MAIL   Вверх
anatox91
Дата 23.5.2008, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: нет
Всего: 13



pilotnet, я так понял это для *никс систем, а я пока что еще на винде сижу smile 


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
Artemios
Дата 26.5.2008, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 14.8.2006
Где: Саратов, Россия

Репутация: 1
Всего: 50



Цитата(anatox91 @  22.5.2008,  19:58 Найти цитируемый пост)
В связи с чем вопрос - как можно установить в этом виджете свой шрифт(причем желательно сделать так, чтобы этот шрифт шел вместе с программой, т.е. в каком-нибудь файле ресурсов, и шрифт в виджете не зависел от того, установлен он в системе или нет)?


Можно и средствами одного Qt, и не доставляя шрифт в систему (сам таким занимался)
http://forum.vingrad.ru/forum/topic-121246.html
если кратко, то такой пример:
Код

#include <QtGui>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    QTextEdit edit;
    int f_id = QFontDatabase::addApplicationFont("./OrteROOS.ttf");
    edit.setFont(QFont(QFontDatabase::applicationFontFamilies(f_id).first()));
    edit.show();
    return app.exec();
}

одинакого работает и под Linux, и под Windows, с чужим для системы шрифтом из файла *.ttf .

Это сообщение отредактировал(а) Artemios - 26.5.2008, 01:18


--------------------
fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ]
PM MAIL   Вверх
anatox91
Дата 26.5.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: нет
Всего: 13



Artemios, спасибо, это именно то, что нужно


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0824 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.