问题标签 [qgraphicsitem]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
qt - QGraphicsItem :模拟不是左上角的项目原点
我的应用程序正在使用 Qt。
我有一个继承QGraphicsPixmapItem的类。
在这些项目上应用变换(例如,旋转)时,项目的原点(或枢轴点)始终是左上角。
我想改变这个原点,例如,在设置项目的位置时,这实际上会改变像素图的中心。
或者,如果我正在应用旋转,则旋转的原点将是像素图的中心。
我还没有找到使用 Qt 直接开箱即用的方法,所以我想像这样重新实现itemChange():
我认为这会起作用,因为Qt 的文档提到项目的位置及其变换矩阵是两个不同的概念。
但它不起作用。
任何的想法 ?
c++ - 为什么 QGraphicsItem::scenePos() 不断返回 (0,0)
我一直在玩弄这段代码:
指针this
指向一个QGraphicsScene
. 在这两种情况下,我都得到QPointF(0,0)
了两种输出。
通过阅读文档,我认为scenePos()
应该返回场景中线条的位置,而不是它在其局部坐标系中的位置。我究竟做错了什么?
qt - QGraphicsItem取消选择重绘问题
非常简单的 Qt GUI 应用程序:
- 在现场我有多个圆圈实现为 QGraphicsItem
- boundingRect 返回围绕这个圆的正方形。
- 方法“形状”未被覆盖。
在我添加的 paint() 方法中出现问题:
选择被很好地绘制,但取消选择不会导致重绘。在日志级别,我可以看到该项目确实丢失了选择标志。从 itemChange 调用 update() 也是没用的。提前感谢您的任何建议。
c++ - 自定义 QGraphicsItems 未编译并给出“对象是私有的”错误
我正在尝试创建一个自定义 QGraphicsItem 按钮,如 Fred所示。他发布的代码可以在这里找到。
问题是当我尝试编译代码时出现以下两个错误:
- /usr/include/qt4/QtGui/qgraphicsitem.h 'QGraphicsItem::QGraphicsItem(const QGraphicsItem&)' 是私有的
- /usr/include/qt4/QtCore/qobject.h
'QObject::QObject(const QObject&)' 是私有的
这是与上面示例中的代码片段基本相同的代码片段。错误是关于类减速。
有趣的是,此处显示的另一个示例工作正常。可以在这里找到示例代码。
知道有什么问题吗?提前致谢。
qt - Qt - 无效转换为子类
我正在使用图形视图框架绘制多边形。我用这个在场景中添加了一个多边形:
但是我需要在图形项上实现一些自定义行为,例如选择、鼠标悬停指示器和其他类似的东西。所以我声明了一个继承QGraphicsPolygonItem的类:
如您所见,到目前为止,该课程并没有做太多事情。但是不应该用我的 GridHex 类替换 QGraphicsPolygonItem 吗?这会引发“从 'QGraphicsPolygonItem*' 到 'GridHex*' 的无效转换”错误:
我究竟做错了什么?
c++ - 子类化 QGraphicsItemGroup
我的系统具有从 QGraphicsWidget 派生的类。我在 QGraphicsScene 的布局中管理派生类对象。现在我需要一个包含两个或多个 QGraphicsWidget 的复合项目,并且我需要将该项目放在我的布局中。所以我选择 QGraphicsItemGroup 并像这样写我的类。
我只再次实现了 sizeHint 函数。将 CompositeItem 实例添加到布局时,它不会显示。什么可能导致这种情况?我哪里做错了?
c++ - 子类化 QGraphicsLayoutItem
我究竟如何继承 QGraphicsLayoutItem?我编写了一个子类 QGraphicsLayoutItem 并重新实现 sizeHint 和 setGeometry 但是当我将自定义项目添加到线性或网格布局时。它不显示?什么不见了?
这是我的审判。
qt - 如何在 MFC 视图中绘制 QGraphicsItem
我开始在我的应用程序中使用 Qt。我的应用程序是基于 MFC 的。我想在我当前的 MFC 视图中绘制一些 QGraphicsItems,可以吗?
您可能会说可以通过在 MFC 视图中使用 QWinWidget 托管 QGraphicsView 来完成,但是这不起作用。因为我的画布(MFC 视图)支持缩放和旋转,而 QGraphicsView 本身不支持。当我缩放 QGraphicsItem 时,QGraphicsView 显示滚动条而不是放大自身。
有什么建议吗?谢谢!
c++ - 容器项实现
我在火车交通控制器软件项目中工作。我在这个项目中的职责是开发可视化铁路 GUI。
我们正在使用 Qt 实施该项目。
现在我正在使用QGraphicsLinearLayout来保存我的项目。我正在使用布局,因为我不想计算每个项目的坐标。
到目前为止,我编写了项目类来添加布局。例如 SwitchItem 类象征着
现实世界中的铁路道岔。每个项目类负责自己的绘画和事件。到目前为止,一切都很好。
现在我需要一个可以包含两个或多个项目的复合项目。这个类将负责绘制其中包含的项目。我需要这个类,因为我必须将两个或多个项目放在同一个布局单元格中。如果我不将它们放在同一个单元格中,我将无法使用布局。见下图。
BlockSegmentItem 和 SignalItem 在同一个单元格内。
CompositeItem 头文件
此代码适用于绘画,但涉及项目事件时会出现问题。 QGraphicsScene将复合项目视为适合布局但不适用于事件的单个项目。因为每个项目都有自己的事件实现。(例如 SignalItem 有其特殊的上下文菜单事件。)
我必须单独处理项目事件。我还需要布局的复合项目实现。我怎样才能克服这个困境?
c++ - QGraphicsItem 不接收鼠标悬停事件
我有一个派生自 的类QGraphicsView
,其中包含 -QGraphicsItem
派生元素。我希望这些元素在鼠标光标悬停在它们上方时改变颜色,所以我实现了hoverEnterEvent
(和hoverLeaveEvent
):
但是,此事件处理程序代码永远不会执行。我已明确启用鼠标跟踪:
尽管如此,还是没有运气。我究竟做错了什么?