2)sceneRect()返回场景中可以看到的区域的顶点和长宽,可以看到的区域区别于所有图元的外边框itemsBoundingRect的顶点和长宽,一般二者是相同的,当出现图元移除时,二者才不同。因为sceneRect不能减少只能增加,故移除图元不能使可见的区域缩小,从而sceneRect不变,但是itemsBoundingRect()将减小。可以通过setSceneRect来重新设...
scene.addEllipse(-100.0, 100.0, 200.0, 100.0,QPen(QBrush(Qt::SolidPattern), 2.0),QBrush(Qt::Dense2Pattern));scene.addLine(-200.0, 200, +200, 200,QPen(QBrush(Qt::SolidPattern), 5.0));scene.addRect(-150, 150, 300, 140);QVector<QPoint> points;points.append(QPoint(150, 250));points....
该形状用于许多事物,包括碰撞检测,命中测试以及QGraphicsScene :: items()函数。 默认实现调用boundingRect()返回简单的矩形形状,但是子类可以重新实现此函数以为非矩形项目返回更准确的形状。 例如,圆形物品可以选择返回椭圆形以更好地进行碰撞检测。 3.6 移动 对于图形项的移动,我们有很多办法实现,也可以在很多层面上对...
mapFromScene和mapToScene函数可用于在场景坐标系之间转换位置。与前面提到的一致,mapFromScene函数接受实数并返回整数值,而mapToScene函数接受整数并返回实数。稍后我们将开发视图的缩放功能时,将使用这些函数。 items函数可用于获取场景中的项目列表。 render函数对于执行整个视图或其一部分的渲染很有用。该函数的用法与Q...
为了实现以上功能,我们主要实现了 QGraphicsScene 和 QGraphicsItem 对应的事件,通过鼠标和键盘来操作。 操作细节主要包括: 选择:点击左键、按 Shift 键可以单选,按下 Ctrl 可进行多选。 添加:点击左键 删除:点击右键,删除鼠标下的 item;当按下 Ctrl 选择多个 items 时,按下 Backspace 键,将选中的全部删除。
可以调用QGraphicsScene: :addItem()函数将图形项添加到场景中,然后调用任意一个图形项发现函数来检索添加的图形项。 QGraphicsScene::items()函数和其他几个重载函数可以返回符合条件的所有图形项。这些图形项不是与指定的点、矩形、多边形或者矢量路径相交,就是包含在它们之中。
1)itemsBoundingRect()返回场景中所有item的外框顶点坐标和所有item整体的长宽。由于采用动态遍历所有图元的方法,所以当图元较多时,这个计算比较耗时。如图如下: 输出如下: 界面计算如下: 2)sceneRect()返回场景中可以看到的区域的顶点和长宽,可以看到的区域区别于所有图元的外边框itemsBoundingRect的顶点和长宽,一般二者是...
可以通过调用QGraphicsScene::setSelectionArea(),传递一个任意形状,来选中场景中的图元。此功能也被用于QGraphicsView中橡皮筋(rubberband)选中的基础。通过调用QGraphicsScene::selectedItems()可以获取当前选中的图元列表。另外一种由QGraphicsScene处理的状态是:一个图元是否有键盘输入焦点。你可以调用QGraphicsScene::...
在QGraphicsScene 上绘制图形时,经常会使用items()这种便利函数,获取当前画布上所有的图形列表;因为绘制的时候,可能会绘制不同的图形,在得到所有的图形列表之后,通常需要对其中的 QGraphicsItem 进行类型检测,确定实际item的类型,然后对其进行类型转换得到正确的item的类型。这样既可以访问标准 item也可以 访问自定义 ite...
QList<QGraphicsItem *> list = items(199, y, 202, 22, Qt::ContainsItemShape);是不是没有前面的scene,我看帮助文档发现只有QGraphicsView类(MyView的父类)的item函数有这种五个参数的重载。scene函数返回的是QGraphicsScene对象指针,而这个类的item函数没有形如这样的五个参数的重载。登录...