添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

QGraphicsItem 是场景中 item 的基类。图形视图提供了一些典型形状的标准 item,例如:矩形 ( QGraphicsRectItem )、椭圆 ( QGraphicsEllipseItem ) 、文本项 ( QGraphicsTextItem )。当这些不满足需求时(例如:需要一些特定形状时),往往需要自定义,通常的做法就是继承 QGraphicsItem(QGraphicsObject)。

自定义Item

必须要实现两个虚函数,否则会报allocating an object of abstract class type “xxxx”。
void paint() : 以本地坐标绘制 item 的内容
QRectF boundingRect() : 将 item 的外边界作为矩形返回由 QGraphicsView 调用以确定什么区域需要重绘

除此之外,可能还需要附加其他需求,
例如:QPainterPath shape() - item 的形状 由contains() 和 collidesWithPath() 用于碰撞检测。如果未实现,则默认为 boundingRect()。
使用信号/槽、属性机制:继承 QObject 和 QGraphicsItem(或直接继承 QGraphicsObject)
处理鼠标事件:重新实现 mouse***Event()
处理键盘事件:重新实现 key***Event()
处理拖放事件:重新实现 drag***Event()、dropEvent()

Bounding Rect

将 item 的外边界定义为矩形,所有绘制必须限制在此区域内,QGraphicsView 使用它来确定 item 是否需要重绘。
虽然 item 的形状可以是任意的(例如:直线、椭圆、矩形 ),但是 bounding rect 总是矩形,并且不受 item 变换的影响。

Shape

它是一个虚函数,具体需求依靠自己去实现。
以本地坐标中的 QPainterPath 形式返回 item 的形状。形状可用于许多事情,包括:碰撞检测,命中测试以及 QGraphicsScene::items() 函数。
shape() 默认实现调用 boundingRect() 返回一个简单的矩形形状,但子类可以重新实现该函数,以返回非矩形 item 更准确的形状。例如,一个圆形 item 可以选择返回椭圆形状,以便更好地进行碰撞检测。
shape() 由 contains() 和 collidesWithPath() 的默认实现调用。

collidesWithItem

它用来判断item与其他item是否有碰撞。

参考这篇博客: https://blog.csdn.net/chen_yi_long/article/details/8273644
多多少少 会有些 灵感

对于一些要生成特定item,依据实际需要添加,然后实现特定函数功能。可能 会结合 QPropertyAnimation QGraphicsItemAnimation QTime 实现一些特定效果

参考博客: https://www.cnblogs.com/klcf0220/p/10316510.html

前言QGraphicsItem 是场景中 item 的基类。图形视图提供了一些典型形状的标准 item,例如:矩形 ( QGraphicsRectItem )、椭圆 ( QGraphicsEllipseItem ) 、文本项 ( QGraphicsTextItem )。当这些不满足需求时(例如:需要一些特定形状时),往往需要自定义,通常的做法就是继承 QGraphicsItem(QGraphic... Qt中提供的Item未必能够满足需要,因此有必要实现自 定义 QGraphicsItem 对象。与QPushButton一样,如果发生鼠标事件,那么为了更换被点击按钮的图像,可以使用paint实现用户自 定义 QGraphicsItem 。 2.一个简单的实验 #include #include "MyItem.h" #include #include #define W
文章目录1. 平移2. 改变尺寸3. 旋转 我们在使用QGraphicsView框架的时候,经常需要自 定义 QGraphicsItem ,并且需要实现Item的平移、改变大小和旋转的效果。接下来介绍他们的一种实现方式 1. 平移 平移效果如下图所示: 实现方式有两种方法: 使用 QGraphicsItem 本身的移动标志实现。 this->setFlag( QGraphicsItem ::Ite...
QGraphicsItem 、QGraphicsView、QGraphicsScene 文章目录 QGraphicsItem 、QGraphicsView、QGraphicsScene前言一、自 定义 QGraphicsItem 二、自 定义 QGraphicsView样例总结 使用 QGraphicsItem 、QGraphicsScene、QGraphicsView。主要功能,实现地图的放大、缩小、复位和运动轨迹的显示和清除,根据运动轨迹旋转图片 一、自 定义 QGraphicsItem graphics
### 回答1: QGraphicsItem 是Qt中的一个类,用于在图形界面中显示自 定义 图形。通过继承 QGraphicsItem 类,可以创建自己的图形对象,并在Qt应用程序中使用它们。 在自 定义 QGraphicsItem 时,需要实现以下方法: 1. boundingRect():返回图形的边界矩形。 2. paint():绘制图形。 3. shape():返回图形的形状。 4. mousePressEvent():处理鼠标按下事件。 5. mouseMoveEvent():处理鼠标移动事件。 6. mouseReleaseEvent():处理鼠标释放事件。 通过实现这些方法,可以创建自己的图形对象,并在Qt应用程序中使用它们。 ### 回答2: QGraphicsItem 是Qt中非常重要的一个基类,它用来表示在场景中绘制的图形项,包括但不限于图形、文字、图片等。 QGraphicsItem 提供了一系列的虚函数,可以被子类重写以自 定义 图形的绘制、交互等行为。 要自 定义 图形,我们需要继承 QGraphicsItem ,然后根据需要实现自己的一些函数。以下是一些需要重写的常用函数: 1. paint:这个虚函数用于绘制图形。通常是在这个函数中使用QPainter来完成绘图操作,将图形绘制在 QGraphicsItem 上。 2. boundingRect:这个虚函数用于指定图形的边界大小,以便进行碰撞检测等操作。我们需要重新实现这个函数来返回正确的边界大小。 3. shape:这个虚函数用于指定图形的形状,以便进行更精细的碰撞检测等操作。我们需要重新实现这个函数,返回正确的形状。 4. mousePressEvent:这个虚函数用于处理鼠标按下事件,我们需要在这个函数中处理鼠标按下时的行为。 5. mouseMoveEvent:这个虚函数用于处理鼠标移动事件,我们需要在这个函数中处理鼠标移动时的行为。 6. mouseReleaseEvent:这个虚函数用于处理鼠标释放事件,我们需要在这个函数中处理鼠标释放时的行为。 7. hoverEnterEvent:这个虚函数用于处理鼠标进入事件,我们需要在这个函数中处理鼠标进入时的行为。 8. hoverMoveEvent:这个虚函数用于处理鼠标移动事件,我们需要在这个函数中处理鼠标移动时的行为。 9. hoverLeaveEvent:这个虚函数用于处理鼠标离开事件,我们需要在这个函数中处理鼠标离开时的行为。 通过继承 QGraphicsItem 并实现上述函数,我们就可以自 定义 各种复杂的图形,并且可以让用户进行交互,实现一些非常有趣的功能。例如,可以实现一个自 定义 的流程图,让用户可以拖拽、连接节点来构建自己的流程,也可以实现一个自 定义 的拼图游戏等等。 ### 回答3: QGraphicsItem 是Qt Graphics View框架中的一个基类,用于在视图中显示自 定义 的图形元素并进行交互操作。使用 QGraphicsItem 可以实现自 定义 的图形和交互,如线条、矩形、椭圆、多边形、文字等元素的绘制和编辑功能。 要创建自 定义 图形,必须继承 QGraphicsItem 类并实现以下几个方法: 1. boundingRect():返回图形元素的边界(矩形框)。 2. paint():实现图形的绘制,通过QPainter对象进行绘制。 3. shape():返回图形的形状,主要用于碰撞检测和事件过滤。 4. mousePressEvent()、mouseMoveEvent()、mouseReleaseEvent():重写这些方法实现交互操作,如拖拽、缩放、旋转等。 在实现自 定义 图形时,还可以重载一些其他的方法来实现更复杂的功能: 1. itemChange():重载此方法可以响应图形元素的变化(如位置、大小、旋转等)。 2. hoverEnterEvent()、hoverMoveEvent()、hoverLeaveEvent():可以实现鼠标悬停时的效果。 3. contextMenuEvent():重载此方法可以响应上下文菜单的点击。 除了上述方法,还可以使用QGraphicsEffect来为自 定义 图形添加特效,如阴影、发光等。 在实际应用中,可以使用Qt Designer来设计自 定义 图形的界面,然后通过代码继承 QGraphicsItem 类并实现上述方法实现自 定义 图形。自 定义 图形的实现需要结合Qt Graphics View框架的其他类一起使用,如QGraphicsScene、QGraphicsView等,来实现图形的显示和交互操作。 总之,使用 QGraphicsItem 可以轻松地实现自 定义 图形和交互操作,为图形界面的开发提供了很大的便利性。