我有一个自定义QGraphicsItem
显示大型(100 MB 压缩,多通道)图像。它现在工作得很好。
这个想法只是加载当前视图比例和图形视图端口所需的扫描线。并将显示划分为内置在单独线程中的图块。该paint()
函数仅构造图块并将它们提供给 QThreadPool。它还检查并绘制任何已完成的图块。有更多代码处理线程/可运行对象和项目之间的事件。但这是基本的部分。
目标是提供响应式 UI。当项目自行更新时,UI 不会被阻止。这一切都很好,直到我试图弄清楚如何打印它。
问题是我需要知道对我的绘画函数的特定调用是由打印而不是屏幕更新引起的。这需要阻塞主线程,直到我所有的图块都完成并绘制给画家(或者打印页面将是空白的,因为 paint() 立即返回)
它还有助于调整采样率,因为打印机的分辨率高于屏幕。
所以我的问题归结为:我怎样才能知道QPainter
传递给我paint()
的是屏幕还是打印机。更好的是,我可以判断调用是用于打印预览还是实际打印?
谢谢。