QGraphicsView设置其中QGraphicsView等比例缩放
时间: 2024-09-28 11:08:14 浏览: 38
`QGraphicsView`是一个用于显示`QGraphicsScene`内容的窗口部件,在Qt图形界面库中,你可以通过设置其属性来实现等比例缩放。以下是基本步骤:
1. **创建QGraphicsView实例**:
首先,你需要创建一个`QGraphicsView`对象,并将其添加到你的用户界面布局中。
```cpp
QGraphicsView *graphicsView = new QGraphicsView(parentWidget);
```
2. **连接信号和槽**:
连接`QGraphicsView`的`scaleFactorChanged()`信号到一个槽函数,以便当缩放因子变化时更新缩放行为。例如:
```cpp
QObject::connect(graphicsView, &QGraphicsView::scaleFactorChanged, this, [graphicsView](double factor) {
graphicsView->setTransformationAnchor(QGraphicsView::AnchorUnderMouse); // 设置锚点
graphicsView->setResizeAnchor(QGraphicsView::AnchorUnderMouse); // 设置调整点
});
```
这里我们设置了鼠标下作为缩放和调整的基准点。
3. **启用等比例缩放**:
为了保持等比例缩放,你需要在缩放事件发生时检查并强制调整宽度和高度的比例。可以实现一个自定义的缩放槽函数:
```cpp
void onScale(double scaleFactor) {
double width = graphicsView->width();
double height = graphicsView->height();
if (width > 0 && height > 0) {
qreal ratio = width / height;
if (ratio != scaleFactor) {
graphicsView->setTransform(QTransform::fromScale(scaleFactor, scaleFactor));
}
}
}
```
然后将这个函数绑定给`QGraphicsView`的`viewportScrolled()`信号:
```cpp
QObject::connect(graphicsView.viewport(), &QGraphicsView::viewportScrolled, this, &onScale);
```
这样,当你在`QGraphicsView`中滚动鼠标滚轮时,它会按照设定的比例缩放视图。
阅读全文