У меня есть пользовательский QGraphicsItem
, который отображает большие (многоканальные сжатые, многоканальные) изображения.Сейчас он работает довольно хорошо.
Идея состоит в том, чтобы загружать только линии сканирования, которые необходимы для текущего масштаба представления и порта графического представления.И разделить дисплей на плитки, которые построены в отдельных потоках.Функция paint()
только создает плитки и передает их в QThreadPool.Это также проверяет и рисует любые плитки, которые сделаны.Есть больше кода, обрабатывающего события между потоками / runnables и элементом.Но это основная часть.
Цель - предоставить отзывчивый пользовательский интерфейс.Когда элемент обновляется сам, пользовательский интерфейс не блокируется.Все это работало хорошо, пока я не попытался понять, как его напечатать.
Проблема в том, что мне нужно знать, что конкретный вызов моей функции рисования происходит в результате печати, а не обновления экрана.Это необходимо, чтобы заблокировать основной поток, пока все мои плитки не будут сделаны и нанесены на рисовальщик (или распечатанная страница будет пустой, поскольку paint () сразу же вернется)
Это также помогает настроить частоту выборки, так какпринтер имеет более высокое разрешение, чем экран.
Итак, мой вопрос сводится к следующему: Как я могу узнать, передан ли QPainter
моему paint()
экран или принтер.А еще лучше, я могу сказать, является ли вызов для предварительного просмотра или фактической печати?
Спасибо.