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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QFont в не GUI потоке. 4.2.2  (Прочитано 4043 раз)
Gryz
Гость
« : Март 26, 2007, 19:01 »

Никто не сталкивался с проблемой? Мне необходимо создавать экземпляры QFont в не GUI потоке.

Каждый раз при вызове конструктора QFont срёт в консоль.

Чем еще чревато использование QFont в не GUI?

Кроме конструктора я ничего не вызываю.
Записан
QCasper
Гость
« Ответ #1 : Март 26, 2007, 19:51 »

Цитата: "Gryz"
Никто не сталкивался с проблемой. Мне необходимо создавать экземпляры QFont в не GUI потоке.

Каждый раз при вызове конструктора QFont срёт в консоль.

Чем еще чревато использование QFont в не GUI?

Кроме конструктора я ничего не вызываю.


Я сталкивался, судя по всему никак на данном этапе развития Qt. Если только через мегаграбли. Я обошел проблему подготовокой картинки в главном потоке, а в отдельном потоке я уже вывожу ее. Но я не знаю какую задачу ты решаешь, и поэтому советовать особо чего-то не могу.
Записан
Gryz
Гость
« Ответ #2 : Март 27, 2007, 14:06 »

Цитата: "QCasper"

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


Просто создаю экземпляры QFont в не gui потоке в составе сложных объектов, потом передаю их gui.

Пока вижу единственное решение проблемы (т.е. как добиться отключения предупреждающих сообщений): создавать текстовое описание QFont в экземплярах QString, а потом уже в gui-потоке создавать по ним шрифты
Записан
chief
Гость
« Ответ #3 : Август 08, 2007, 10:45 »

Столкнулся с похожей проблемой. нужно было склеить в QImage несколько слоёв один из которых слой с текстом. Удалось победить следующим образом
1. в потоке нужно создавать обьект QFont причём конструктор нужно использовать QFont ( const QString & family, int pointSize = -1, int weight = -1, bool italic = false ) - это связанно с тем что QFont использует механизм ImplicitSharing отсюда и падения на межпоточке ибо по дефолту вновь созданный QFont использует указатель на дефолтовый шрифт приложения.
2. нужно завернуть в мутексы всё обращение к шрифтам в потоках, что разумеется сводит на нет все вкусности многопоточности. это связано с использованием FreeType в Х11. как именно пока ниасилил. второе разумеется необходимо тока при работе под иксами.

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

Сообщений: 2679


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


Просмотр профиля
« Ответ #4 : Август 08, 2007, 14:03 »

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

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 не волк, в лес не уйдёт
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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