我试图弄清楚我的 QGraphicsView 需要多长时间才能重绘。我尝试了以下方法:
QElapsedTimer timer;
timer.start();
complexViewTransformation();
qDebug() << timer.elapsed();
问题是我得到的结果非常小,只有 0 到 3 毫秒,即使内容在视觉上有点卡顿。我认为小结果的发生是因为在应用程序重新进入事件循环之前不会发生重绘。那么如何测量重绘实际需要多长时间呢?
我试图弄清楚我的 QGraphicsView 需要多长时间才能重绘。我尝试了以下方法:
QElapsedTimer timer;
timer.start();
complexViewTransformation();
qDebug() << timer.elapsed();
问题是我得到的结果非常小,只有 0 到 3 毫秒,即使内容在视觉上有点卡顿。我认为小结果的发生是因为在应用程序重新进入事件循环之前不会发生重绘。那么如何测量重绘实际需要多长时间呢?
我不认为瓶颈在你的方法/占位符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();
}
};