我在 Windows 中使用 qt 5.0.1。我正在创建 200k+ 自定义 QGraphicsItem。我在这些自定义项中添加了基本功能,例如鼠标悬停、鼠标单击等。这些项是静态的。但在这些项目之上,我添加了一些动画项目(最多 200 个)(不同的属性动画、比例、不透明度等)。当我在场景中添加这些项目时,它变得非常慢,在一个相对强大的工作站中。
QGraphicsScene *scene = new QGraphicsScene();
scene->setSceneRect(0, 0, width, height);
scene->setBackgroundBrush(Qt::darkGray);
scene->setItemIndexMethod(QGraphicsScene::NoIndex);
QGraphicsView *view = new QGraphicsView( scene );
view->setRenderHint(QPainter::Antialiasing, false);
view->setResizeAnchor(QGraphicsView::AnchorViewCenter);
view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
view->resize( width, height );
view->setOptimizationFlags(QGraphicsView::DontSavePainterState);
view->setViewportUpdateMode( QGraphicsView::SmartViewportUpdate);
view->setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
view->setCacheMode(QGraphicsView::CacheBackground);
view->setViewportUpdateMode( QGraphicsView::FullViewportUpdate);
view->show();
我尝试了以下方法,但它使渲染视图非常糟糕,因为它似乎启用了抗锯齿,但我需要一些像素标签精度。
view->setViewport(new QGLWidget( QGLFormat(QGL::SampleBuffers)));
我错过了一些重要的 Qt 编程技巧吗?请建议。我可以发布代码,或者如果以防万一请告诉我更多解释。提前致谢。