草庐IT

qgraphicsitem

全部标签

c++ - 为什么 QGraphicsItem::scenePos() 不断返回 (0,0)

我一直在研究这段代码:QGraphicsLineItem*anotherLine=this->addLine(50,50,100,100);qDebug()scenePos();QGraphicsLineItem*anotherLine2=this->addLine(80,10,300,300);qDebug()scenePos();this指针指向一个QGraphicsScene。在这两种情况下,我都得到了QPointF(0,0)的输出。通过阅读文档,我认为scenePos()应该返回位置线在场景中的位置,而不是它在局部坐标系中的位置。我做错了什么? 最佳

c++ - 查找 QGraphicsItem 的屏幕位置

用例:这应该是一个相当普遍的问题。在带有QMdiArea的普通QMainWindow中,有一个带有QGraphicsView的mdiChild。这个View显示了一个QGraphicsScene,里面有QGraphicsItems。右键单击这些项目之一可选择(聚焦)项目并打开上下文菜单,该菜单方便地放置在屏幕坐标QGraphicsSceneMouseEvent::screenPos()处。这按预期工作。现在我想在用户按下某个键时显示相同的上下文菜单(例如Qt::Key_Menu)。我知道所选择的(聚焦的)项目,我知道显示场景的View。所以我的问题是:获取场景中QGraphicsIte

QGraphicsItem鼠标拖动图元进行缩放拉伸(四)

系列文章目录QGraphicsItem图元的简单使用(一)QGraphicsItem图元拖动绘制(二)QGraphicsItem图元旋转缩放和自定义图元(三)文章目录系列文章目录前言一、演示效果二、相关代码总结前言接上一篇,本章将讲解如何通过鼠标拖动图元进行缩放拉伸一、演示效果二、相关代码需要先在打开图元接受鼠标悬浮事件的开关,构造函数中添加如下代码://接收鼠标悬浮事件this->setAcceptHoverEvents(true);计算鼠标各个悬浮区域,鼠标悬浮时,显示不同的鼠标样式voidRectItem::UpdateHandlesArea(){QRectFrect=this->bou

c++ - Qt : Efficiently handle QGraphicsItems that have "lots of pixmaps"? (RTS)

我目前正在构建一个小型实时策略2D引擎。和我想知道如何处理最终会使我的屏幕变得困惑的许多不断变化的Sprite.仅供引用,我的目标不是AAA级,我只是想实现一些机器学习方法。因此,我选择了魔兽争霸II废弃的ISO,无耻地拍摄了一些图形,并且在第一个问题上遇到了麻烦。http://img263.imageshack.us/img263/1480/footman.png正如您在上面看到的,即使是魔兽争霸II的简单仆从也有大约50个Sprite用于动画。这是很多。它会经常改变Sprite。(黑线只是检查我的alphachannel是否正确)因此,最后一个问题:如何有效地实现不断变化的QGra

c++ - Qt : Efficiently handle QGraphicsItems that have "lots of pixmaps"? (RTS)

我目前正在构建一个小型实时策略2D引擎。和我想知道如何处理最终会使我的屏幕变得困惑的许多不断变化的Sprite.仅供引用,我的目标不是AAA级,我只是想实现一些机器学习方法。因此,我选择了魔兽争霸II废弃的ISO,无耻地拍摄了一些图形,并且在第一个问题上遇到了麻烦。http://img263.imageshack.us/img263/1480/footman.png正如您在上面看到的,即使是魔兽争霸II的简单仆从也有大约50个Sprite用于动画。这是很多。它会经常改变Sprite。(黑线只是检查我的alphachannel是否正确)因此,最后一个问题:如何有效地实现不断变化的QGra

c++ - 将信号/插槽(QObject)添加到 QGraphicsItem : performance hit?

我想向QGraphicsItem添加信号/插槽,以便我可以从另一个线程访问QGraphicsItemObjects。我知道有两个选项:使用QGraphicsObject或从QObject和QGraphicsItem继承。使用QGraphicsObject这被认为很慢。根据thisanswer在stackoverflow上QGraphicsObjects很慢,因为它们的实现。当我查看QGraphicsObjects的源代码时,我可以看到根据对对象所做的更改发出了很多信号。对我来说,这似乎是为什么QGraphicsObjects速度慢的一个合理论据,但我认为第二种解决方案可以避免这种性能损

c++ - 将信号/插槽(QObject)添加到 QGraphicsItem : performance hit?

我想向QGraphicsItem添加信号/插槽,以便我可以从另一个线程访问QGraphicsItemObjects。我知道有两个选项:使用QGraphicsObject或从QObject和QGraphicsItem继承。使用QGraphicsObject这被认为很慢。根据thisanswer在stackoverflow上QGraphicsObjects很慢,因为它们的实现。当我查看QGraphicsObjects的源代码时,我可以看到根据对对象所做的更改发出了很多信号。对我来说,这似乎是为什么QGraphicsObjects速度慢的一个合理论据,但我认为第二种解决方案可以避免这种性能损

c++ - QGraphicsItem 不接收鼠标悬停事件

我有一个从QGraphicsView派生的类,它包含QGraphicsItem派生的元素。我希望这些元素在鼠标光标悬停在它们上方时改变颜色,所以我实现了hoverEnterEvent(和hoverLeaveEvent):voidMyGraphicsItem::hoverEnterEvent(QGraphicsSceneHoverEvent*event){update(boundingRect());}但是,此事件处理程序代码永远不会执行。我已明确启用鼠标跟踪:MyGraphicsView::MyGraphicsView(MainView*parent):QGraphicsView(pa

c++ - QGraphicsItem 不接收鼠标悬停事件

我有一个从QGraphicsView派生的类,它包含QGraphicsItem派生的元素。我希望这些元素在鼠标光标悬停在它们上方时改变颜色,所以我实现了hoverEnterEvent(和hoverLeaveEvent):voidMyGraphicsItem::hoverEnterEvent(QGraphicsSceneHoverEvent*event){update(boundingRect());}但是,此事件处理程序代码永远不会执行。我已明确启用鼠标跟踪:MyGraphicsView::MyGraphicsView(MainView*parent):QGraphicsView(pa

c++ - 选中时如何删除 QGraphicsItem 周围的边框?

非常基本的问题,但我无法通过谷歌找到解决方案。在QT中,当一个图形项被选中时,它周围会有一个边框。我想知道如何将此边框设置为不可见。谢谢。 最佳答案 没有界面可以禁止绘制内置QGraphicsItems的选择边框。我能想到的唯一方法是从内置项目中派生出您自己的项目并覆盖paint()函数:voidMyRectItem::paint(QPainter*painter,constQStyleOptionGraphicsItem*option,QWidget*widget){QStyleOptionGraphicsItemmyOption