0

QGraphicsView の再描画にかかる時間を把握しようとしています。私は次のことを試しました:

QElapsedTimer timer;
timer.start();

complexViewTransformation();

qDebug() << timer.elapsed();

問題は、コンテンツが視覚的に途切れているにもかかわらず、0 ~ 3 ミリ秒という非常に小さな結果しか得られないことです。アプリケーションがイベントループに再び入るまで再描画が行われないため、小さな結果が生じると思います。では、再描画に実際にかかる時間をどのように測定できますか?

4

1 に答える 1

4

complexViewTransformation()ビューのペイントイベント内で実際の描画が舞台裏で行われるため、メソッド/プレースホルダーにボトルネックがあるとは思いません。このイベントでは、ビューは描画する必要があるすべてのもの (更新する領域内にあるすべてのアイテム) を描画します。

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();
    }
};
于 2012-05-21T23:28:11.380 に答える