要让 QGraphicsView 中的一个 item 居中显示,可以使用以下步骤:
获取视图的大小:
QSizeF viewSize = view->viewport()->size();
获取要居中显示的 item 的大小:
QRectF itemRect = item->boundingRect();
计算偏移量,使得 item 在视图中居中:
qreal xOffset = (viewSize.width() - itemRect.width()) / 2; qreal yOffset = (viewSize.height() - itemRect.height()) / 2;
将视图的滚动条设置为适当位置以确保 item 居中显示: “`cpp view->ensureVisible(item, 0, 0);
// 若需要平滑滚动到居中位置,可使用如下代码替代上面的 ensureVisible() /* QScrollBar* hBar = view->horizontalScrollBar(); QScrollBar* vBar = view->verticalScrollBar(); hBar->setValue(xOffset + (itemRect.width() - viewSize.width()) / 2); vBar->setValue(yOffset + (itemRect.height() - viewSize.height()) / 2); */
调整视图的变换矩阵以确保 item 在视图中心居中。例如,将 QGraphicsView 的 scene 指定为 QGraphicsScene,并执行以下操作:
QTransform transform;
transform.translate(xOffset, yOffset);
view->setTransform(transform);
这样,指定的 item 就会在 QGraphicsView 中居中显示了。
内容由零声教学AI助手提供,问题来源于学员提问