如何测量QGraphicsView中绘制的时间长度

时间:2012-05-21 23:02:42

标签: qt qgraphicsview performance

我试图弄清楚我的QGraphicsView需要多长时间才能重绘。我尝试过以下方法:

QElapsedTimer timer;
timer.start();

complexViewTransformation();

qDebug() << timer.elapsed();

问题在于我得到的结果非常小,为0到3毫秒,即使内容在视觉上是口吃的。我认为结果很小,因为重绘不会发生,直到应用程序重新进入事件循环。那么如何衡量重绘实际需要多长时间呢?

1 个答案:

答案 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();
    }
};