我试图弄清楚我的QGraphicsView需要多长时间才能重绘。我尝试过以下方法:
QElapsedTimer timer;
timer.start();
complexViewTransformation();
qDebug() << timer.elapsed();
问题在于我得到的结果非常小,为0到3毫秒,即使内容在视觉上是口吃的。我认为结果很小,因为重绘不会发生,直到应用程序重新进入事件循环。那么如何衡量重绘实际需要多长时间呢?
答案 0 :(得分:4)
我不认为瓶颈在你的方法/占位符complexViewTransformation()
中,因为实际的绘图是在视图的paint事件中的幕后完成的。在这种情况下,视图会绘制需要绘制的所有内容(要更新的区域内的任何项目)。
如果从QGraphicsView继承,则可以重新实现paintEvent并测量对原始QGraphicsView :: paintEvent的调用时间:
class MyGraphicsView : public QGraphicsView {
{
//...
protected:
void paintEvent(QPaintEvent *e)
{
QElapsedTimer timer;
timer.start();
// call the "real" paint event
QGraphicsView::paintEvent(e);
qDebug() << timer.elapsed();
}
};