23得票2回答
QGraphicsItem无法接收鼠标悬停事件。

我有一个派生自QGraphicsView的类,其中包含QGraphicsItem派生元素。当鼠标光标悬停在这些元素上时,我希望它们能够改变颜色,因此我实现了hoverEnterEvent(和hoverLeaveEvent):void MyGraphicsItem::hoverEnterEven...

18得票3回答
我能在QGraphicsItem中获取鼠标事件吗?

我已经对 QGraphicsRectItem 进行了子类化,但它没有接收到任何鼠标事件。我看到其他类似的问题说我需要启用鼠标跟踪,但 setMouseTracking 在 QWidget 中,而 QGraphicsItem 似乎不是 QWidget。 我已经实现了 paint ,它可以工作。...

17得票2回答
如何优化QGraphicsView的性能?

我正在使用 Qt 5.6.2 开发 CAD 应用程序,需要在廉价计算机上运行,同时需要处理同一场景中的数千个项目。因此,我不得不进行大量实验以获得最佳性能。 我决定创建这篇文章来帮助其他人和自己,同时也希望其他人能贡献更多的优化技巧。 我的文章仍然在进展中,如果我发现更好的技术(或者说了些...

15得票3回答
查找QGraphicsItem的屏幕位置

使用场景:这应该是一个相当常见的问题。在一个带有QMdiArea的普通QMainWindow中,存在一个带有QGraphicsView的mdiChild。此视图显示一个带有QGraphicsItems的QGraphicsScene。对这些项之一进行右键单击将选择(关注)该项并打开上下文菜单,方...

15得票1回答
QGraphicsItem::prepareGeometryChange() 是如何工作的?

根据Qt文档,prepareGeometryChange()函数“为几何变换准备项。在更改项的边界矩形以保持QGraphicsScene索引最新之前,请调用此函数。如果需要,prepareGeometryChange()将调用update()函数。” 我不理解的是QGraphicsItem如...

14得票3回答
防止QGraphicsItem移动到QGraphicsScene之外

我有一个场景,其固定尺寸为(0;0)到(481;270):scene->setSceneRect(0, 0, 481, 270); 在其中,我有一个自定义的GraphicsItem,我可以通过标志ItemisMovable移动它,但我希望它留在场景中;我的意思是我不想让它的坐标超出(0;...

12得票1回答
QGraphicsScene::itemAt()中的QTransform是什么?

我创建了一个自定义的QGraphicsItem并重写了boundingRect()和paint()方法。QRectF myTile::boundingRect() const { return QRectF(xPos*10, yPos*10, 10, 10); } void myTile...

12得票1回答
在QGraphicsView中相对于静态位置绘制一个项目

我希望在我的QGraphicsView的右上角绘制一个通知。然而,QGraphicsItems的位置是用场景坐标指定的,因此如果用户平移/缩放以查看场景的不同部分,则该通知将移动到屏幕外。 我已经想出了一种方法,即每当当前视图改变时移动和缩放通知来模拟这种行为。但这似乎非常低效且不优雅。 ...

12得票2回答
如何在添加项或更改项时从QGraphicsScene获得通知?

在我的项目中,我正在使用 QGraphicsScene 并在代码中不断添加/删除项。 现在我想在 QGraphicsItem 被添加或移除时得到通知。许多 Qt 类都有通知信号或至少在这些更改时调用的虚拟函数。我试图避免在许多地方添加许多代码行,这既麻烦又不安全(现在或将来可能会忘记插入/删...

11得票1回答
当缩放QGraphicsView时如何调整QPen的粗细?

QGraphicsView 的一个惊人特性是它能够根据其场景内容(实际上是插入到场景中的每个 QGraphicsItem)自我缩放。我插入的 QPixmap 缩放正确,也就是说,如果我使用以下比例因子 4x4:view->scale(4,4); 我想缩放Pixmap。 但是绘制方框的情...