我们的产品显示基于矢量的原理图,使用QGraphicsView / QGraphicsScene机制实现。在Windows上,具有10,000个项目的图形达到每个进程10,000个GDI句柄的限制。我已经想出如何增加可用的GDI句柄数量,但这不是一个真正的解决方案,而且对于我们的应用程序,不可能将值增加到足以覆盖所有可能性,因为这将超过最大Window限制。
我一直试图弄清楚哪些Qt对象使用了GDI句柄(并且USER对象存在类似问题),但我没有太多运气。我到目前为止提出的候选人是QBrush和QFont。我能够从我的QGraphicsItem派生对象的每个实例中消除QBrush,但这并没有改变所使用的GDI句柄的数量。消除QFont,即使是简单的测试也更难。
我的测试显示中涉及两个自己的类。对于其中一个,每个实例包括一个QBrush,QFont,QStaticText,几个QRectF和一个QColor。另一个包括两个QGraphicsRectItem。提供源代码是有问题的。
我一直在搜索Qt源代码,查找创建GDI句柄的调用,也没有太多运气。任何人都可以向我指出这个特定于Qt的主题的资源吗?
我正在使用Qt 4.8.5,Windows 7 64位,Visual Studio 2010。
谢谢你, Doug McGrath