![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
RazrFalcon |
![]()
Сообщение
#1
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Простейший пример:
Проблема в следующем: при печати pdf - все работает отлично, но при печати на реальный принтер получаю варнинг QPixmap: It is not safe to use pixmaps outside the GUI thread Дока говорит QPixmap в потоке использовать нельзя, а можно QImage, и именно его я и использую... В итоге из-за варнингов этих на печати у меня пустые страницы... При том что drawLine и прочие примитивы печатает нормально. Не хочет только QImage. В чем может быть проблема? Сообщение отредактировал RazrFalcon - 3.7.2013, 18:52 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Возможно сам Q-принтер (внутри использует QPixmap). Как вариант печатать только из главного потока (организовав очередь), а в эту очередь помещать QImage из разных потоков.
|
|
|
Iron Bug |
![]()
Сообщение
#3
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
я не спец в Qt, но у тебя объекты разные: в поток ты перенёс объект класса Print, а вызываешь метод класса PrintBook. скорее всего, часть класса PrintBook не будет адаптирована для работы в потоке.
|
|
|
RazrFalcon |
![]()
Сообщение
#4
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Iron Bug, опечатка, поправил
![]() Litkevich Yuriy, так в том то и беда, что в основном потоке прога фризится. Да и QPrinter в pdf то нормально пишет. А на реальный принтер уже не хочет... Попробую QImage рендерить в потоке, может и выгорит. Сообщение отредактировал RazrFalcon - 3.7.2013, 18:55 |
|
|
RazrFalcon |
![]()
Сообщение
#5
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Цитата Как вариант печатать только из главного потока (организовав очередь), а в эту очередь помещать QImage из разных потоков. Все тормоза именно в painter.drawImage() и его то я не могу вынести в поток... |
|
|
Litkevich Yuriy |
![]()
Сообщение
#6
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Попробую QImage рендерить в потоке, может и выгорит. а я понял, что ты его уже и используешь:а можно QImage, и именно его я и использую... К стати, по моим субъективным наблюдениям Qt::SmoothTransformation заставляет заметно потеть функцию масштабирования. |
|
|
RazrFalcon |
![]()
Сообщение
#7
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Да, почти в два раза дольше, но картинка лучше немного.
В общем идея вынести печать полностью в поток, а не частично. Пока никак... |
|
|
Litkevich Yuriy |
![]()
Сообщение
#8
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
В общем, проверь у себя такую вещь: использование одного экземпляра QPrinter в разных потоках - источник проблем.
Пробуй создать экземпляр принтера в неком потоке и всю печатную обработку суй в этот же поток. |
|
|
RazrFalcon |
![]()
Сообщение
#9
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
В общем да, по сути в этом и должна была быть проблема.
Вот тут дали развернутый ответ: http://qt-project.org/forums/viewthread/29549/ Но проблема осталась, даже когда абсолютно все создано в потоке... |
|
|
Алексей1153 |
![]()
Сообщение
#10
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2944 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
как вариант - сериализировать QImage в файл, затем запустить вспомогательный процесс, который этот файл распечатает. Грабли, конечно. Вообще, эта заморочка Qt с зависимостью GUI от потока напрягает...
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 25.7.2025, 1:17 |