草庐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++ - 将信号/插槽(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

c++ - 强制 QGraphicsItem 保持不变

这个问题在这里已经有了答案:DrawaniteminastaticlocationrelativetotheQGraphicsView(1个回答)关闭9年前。我有一个QGraphicsScene,里面装满了QGraphicsItems,用户可以平移和缩放来检查所有不同的QGraphicsItems。但是,我想要一个始终位于屏幕左上角的QGraphicsTextItem标签。忽略缩放很容易,因为我可以setFlags(QGraphicsItem::ItemIgnoresTransformations),但我还没有弄清楚如何强制该位置保持在左上角。让我的标签“漂浮”在同一个地方的最佳方式是

c++ - QGraphicsView 和 QGraphicsItem : don´t scale item when scaling the view rect

我正在使用Qt的QGraphicsView-和QGraphicsItem-子类。有没有一种方法可以在更改View矩形时不缩放View中项目的图形表示,例如放大时。默认行为是我的项目相对于我的View矩形缩放。我想可视化2d点,这些点应该由一个细矩形表示,在放大View时不应缩放。请参阅典型的3d建模软件以供引用,其中顶点始终以相同大小显示。谢谢! 最佳答案 将QGraphicItem的标志QGraphicsItem::ItemIgnoresTransformations设置为true对你不起作用吗?