向QGraphicsScene中加入控件

向QGraphicsScene中加入控件,第1张

只要是 QWidget 的子类,都可以添加到 QGraphicsScene 中。

为了使加入 QGraphicsScene 中的 QWidget 支持自绘,比如实现圆角效果,我将对Widget进行封装。

在 QGraphicsScene 中,使用 addItem

在此基础上,就可以实现自己的控件了。我派生 GraphicsSceneAbstractWidget ,创建自己的widget。

然后实现这个类。

最后,把这个控件加入到 QGraphicsScene 中。

视图框架的一部分,为绘制你自己的item提供了一个轻量级的窗口。支持很多特性,例如:鼠标、键盘事件、拖放、分组、碰撞检测等。

通常在演示工具中使用分组,当用户想要将多个较小的 items 组合成一个大的 item 时,以简化 items 的移动和复制。

QGraphicsItemGroup 是一种特殊类型的复合 item,将自身及其所有子项视为一个 item(即,其所有子项的所有事件和几何图形都被合并在一起)。

QGraphicsItemGroup 的 boundingRect() 函数返回位于其中所有 items 的边界矩形。QGraphicsItemGroup 忽略其子项上的 ItemIgnoresTransformations 标记(即,相对于 QGraphicsItemGroup 的 geometry,子项被视为可变换的)。

要构造一个 QGraphicsItemGroup,有两种方式:

1、将一个 items 列表(例如:所有选择的 items)传递给 QGraphicsScene::createItemGroup(),它返回一个新的 QGraphicsItemGroup(最简单、最常见的方式)。

2、手动构造一个 QGraphicsItemGroup,使用 QGraphicsScene::addItem() 将其添加到场景中,然后通过调用 addToGroup() 为 group 手动添加 item,一次只能添加一个。

左上角为(0, 0)点,宽400,高300这样的矩形,线性映射的示意图如下:

QGraphicsSimpleTextItem provides a simple text label item

QGraphicsTextItem provides an advanced text browser item

这两个(反正第二个肯定可以的,第一个应该只是简单的lable),生成实例设置flag为Qt::TextEditorInteraction添加到screen就好了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11417720.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存