QGraphicsView教程

简介

  • Graphics View 提供了一个用于管理和交互大量的可定制的 2D 图形项与用于可视化这些项的 View 小部件的 surface(曲面),并提供缩放(zooming)和旋转(rotation)功能支持。
  • 该框架包括事件传播体系结构(an event propagation architecture),该体系结构允许对场景中的项目进行精确的双精度交互功能。图元可以被如下操作处理:按键事件,鼠标按下,移动,释放和双击事件,它们还可以跟踪鼠标的移动。
  • Graphics View 使用 BSP(Binary Space Partitioning,二进制空间分区)树提供了非常快速的图元发现功能,因此,它可以实时可视化大型场景(甚至可以包含数百万个图元)。

教程

  • 7
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
QGraphicsView和QGraphicsScene是Qt中用于2D图形显示和交互的重要组件。下面是它们的基本使用教程: 1. 创建QGraphicsScene对象 ```cpp QGraphicsScene* scene = new QGraphicsScene(parent); ``` 2. 将图形元素添加到场景中 ```cpp QGraphicsItem* item = new QGraphicsItem(); scene->addItem(item); ``` 3. 创建QGraphicsView对象 ```cpp QGraphicsView* view = new QGraphicsView(scene, parent); ``` 4. 设置视图显示区域大小 ```cpp view->setFixedSize(width, height); ``` 5. 将视图添加到主窗口中 ```cpp layout->addWidget(view); ``` 6. 设置视图的缩放和平移 ```cpp view->setDragMode(QGraphicsView::ScrollHandDrag); //启用拖拽模式 view->setViewportUpdateMode(QGraphicsView::SmartViewportUpdate); //更新视图时,只更新可见区域 view->setRenderHint(QPainter::Antialiasing); //启用反锯齿 view->setOptimizationFlag(QGraphicsView::DontAdjustForAntialiasing); //不自适应反锯齿 view->setInteractive(true); //启用交互 //设置缩放 view->setRenderHint(QPainter::SmoothPixmapTransform); view->setResizeAnchor(QGraphicsView::AnchorUnderMouse); view->setTransformationAnchor(QGraphicsView::AnchorUnderMouse); //设置平移 view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); ``` 7. 设置场景的背景 ```cpp scene->setBackgroundBrush(QBrush(Qt::white)); ``` 8. 设置图形元素的属性 ```cpp item->setPos(x, y); //设置元素在场景中的位置 item->setZValue(z); //设置元素的堆叠顺序 item->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); //设置元素的交互属性 ``` 9. 处理视图和场景的事件 ```cpp void MyView::mousePressEvent(QMouseEvent* event) { QGraphicsView::mousePressEvent(event); QPointF scenePos = mapToScene(event->pos()); //处理场景中的元素事件 } void MyScene::mousePressEvent(QGraphicsSceneMouseEvent* event) { QGraphicsScene::mousePressEvent(event); QGraphicsItem* item = itemAt(event->scenePos(), QTransform()); //处理元素事件 } ``` 以上是QGraphicsView和QGraphicsScene的基本使用教程,可以根据实际需求进行进一步的开发和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星火撩猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值