我正在嵌入式平台上实现图像查看器。硬件是一种平板电脑,并具有触摸屏作为输入设备。我正在使用的Qt版本是5.4.3。
QGraphicsView用于显示包含QGraphicsPixmapItem的QGraphicsScene。 QGraphicsPixmapItem包含要显示的像素图。
代码的相关部分如下:
void MyGraphicsView::pinchTriggered(QPinchGesture *gesture)
{
QPinchGesture::ChangeFlags changeFlags = gesture->changeFlags();
if (changeFlags & QPinchGesture::ScaleFactorChanged) {
currentStepScaleFactor = gesture->totalScaleFactor();
}
if (gesture->state() == Qt::GestureFinished) {
scaleFactor *= currentStepScaleFactor;
currentStepScaleFactor = 1;
return;
}
// Compute the scale factor based on the current pinch level
qreal sxy = scaleFactor * currentStepScaleFactor;
// Get the pointer to the currently displayed picture
QList<QGraphicsItem *> listOfItems = items();
QGraphicsItem* item = listOfItems.at(0);
// Scale the picture
item.setScale(sxy);
// Adapt the scene to the scaled picture
setSceneRect(scene()->itemsBoundingRect());
}
由于捏合,像素图从视图的左上角开始缩放。
如何将像素图缩放到QPinchGesture的中心?
答案 0 :(得分:0)
项目围绕其变换原点进行缩放,默认情况下为(0,0)。您可以通过调用setTransformOriginPoint()来选择不同的转换原点。
该功能接收QPoint,因此您需要首先找到您的中心点然后设置原点。
void QGraphicsItem::setTransformOriginPoint(const QPointF & origin)