问题标签 [qgraphicswidget]

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.

0 投票
1 回答
418 浏览

c++ - 是否可以在带有 QMainWindow 的应用程序中使用 QGraphicsLayout?

我希望做的是有一个标准的 QMainWindow 类,其中包含菜单、工具栏以及布局中的各种小部件,其中一个是显示包含图形布局的图形小部件的图形视图。但是每当我将图形视图放入主窗口时,什么都不会显示。如果我使用包含 main() 函数内部布局的图形小部件创建图形视图,那么一切都是可见的。

作为测试,我使用了 Qt 基本图形布局示例中提供的工作代码,在 main 中创建了一个 QMainWindow 类,并将 QGraphicsScene、Window 和 QGraphicsView 创建移动到主窗口类。

我自己测试了主窗口类,并且像行编辑这样的小部件显示得很好。但是下面的代码,取自示例中的 main,在主窗口类中不再有效。

我只是得到一个空白区域。如果我不添加 Window 小部件,而是例如绘制一个椭圆,那么它是可见的。如果我添加一个带有背景颜色的普通 QGraphicsWidget,那么它也是可见的。只是当事物在图形小部件的布局内时,我什么也得不到。我一直在寻找答案,深入研究文档,甚至查看 Qt 源代码,看看我是否可以弄清楚我想要做的事情是否可能,但没有任何运气。

我的主窗口:

主要代码:

0 投票
1 回答
535 浏览

python - QGraphicesItem 在 hoverEnterEvent 发出信号

QGraphicsWidget在输入 a或 a时发出信号的最佳方法/做法是QGraphicsItem什么?

在我的 MWE 中,每当用户将鼠标悬停在 QGraphicsScene 中的某个项目上时,我想触发对MainWindow.update、 from的调用。Square.hoverEnterEvent问题是它QGraphicsItem/Widget并不是真正设计用来发出信号的。相反,这些类被设置为处理从QGraphicsScene. QGraphicsScene处理用户选择了一个项目但似乎没有处理鼠标进入事件的情况,至少没有机制entryEvent可以渗透到父窗口小部件/窗口。

文档状态QGraphicsItem并非旨在发出信号,而是旨在响应由QGraphicsScene. 相比之下,它似乎QGraphicsWidget是为了这样做而设计的,但我不完全确定入口点应该在哪里。根据我对设计的理解,就我个人而言,我觉得QGraphicsScene真的应该发出这些信号,但我也不确定在这种情况下入口点应该在哪里。

目前我看到以下可能的解决方案,#3 是首选方法。我想知道是否有人有更好的策略:

  1. 为每个 QGraphicsItem/QGraphicsWidget创建一个QGraphicsScene子类,我们称之为它,并在每个小部件上调用自定义触发器/信号。在这里,我必须对我打算包含在场景中的任何项目进行子类化。SceneScene
  2. 设置Mainwindow为场景中每个项目或场景本身的事件过滤器并调用MainWindow.update.
  3. 设置Mainwindow.data为 的子类QGraphicsScene,我们称它为Scene,并让它过滤它自己的发出hoverEntry信号的事件。hoverEntry然后MainWindow.update根据需要连接。
0 投票
1 回答
563 浏览

c++ - 在 QGraphicsWidget::paint 函数中绘制文本

我正在尝试在 qgraphicswidget 中绘制文本。场景的水平比例为 -180 到 180,垂直比例为 -90 到 +90(这是一张世界地图)。

当我放大地图上的单个项目时,我希望显示一些文本。我的一个特定项目的绘制功能的代码如下所示:

drawText 调用似乎根本不起作用。我在这个缩放级别的比例非常小。m_airport_boundary QRectF 变量具有以下值: { x = -0.010286252057250001, y = -0.010286252057250001, width = 0.020572504114500002, height = 0.020572504114500002 }

m_airport_boundary 矩形的绘图是可见的,所以我知道我试图在正确的位置绘图。谁能告诉我我做错了什么?

正在绘制的屏幕截图... 黑圈是 m_airport_boundary 椭圆。绿色的东西是 DrawILS 的结果,蓝色的圆圈是 DrawCOM

在此处输入图像描述

0 投票
0 回答
129 浏览

qt - Why does my QGraphicsWidget disappear when it's bounding box is still in view?

I have a QGraphicsWidget that represents a line on a map. The object disappears when a small portion of the bottom of the bounding rectangle moves out of the scene. It also disappears when part of the right side of it's bounding rectangle goes out of the scene. Below is a illustration of what is happening.

The green box is the bounding rect as drawn from the object's paint function.

Object is visible

Now I pan the scene so that only this much of the object is visible. It is still in view. However, if I pan any more to the right, the object disappears despite having half of it's bounding rect still in the viewport.

Object will disappear if panned one more pixel right.

The same thing happens when panning down so that the bottom of the object is leaving the viewport. If I pan any more down than below, the object disappears.

enter image description here

Here is the paint function:

Any ideas about what is going on here? I've been messing with it for a couple of days and I'm out of things to try.

Update Constructor

0 投票
1 回答
777 浏览

c++ - 是否可以在自定义 QGraphicsWidget 中嵌入 QWidget?

我想在我的 QGraphicswidget 中嵌入一个 QWidget,例如按钮或进度条,但我只看到了将 QWidget 添加到 QGraphicsScene 的示例,即

在我的自定义图形小部件中,我正在绘制函数中绘制文本和其他自定义形状。我认为您需要在此处添加 QWidget,但我可能错了。有谁知道如何做到这一点?

这是我重载的绘画功能:

0 投票
2 回答
615 浏览

c++ - 为什么 QGraphicsWidget 的选择边框在 QGraphicsScene 中不可见?

我通过QGraphicsProxyWidget向图形场景(QGraphicScene)添加了一个小部件。问题是当我选择它被选中的项目时,但选择边框不可见。

这是代码:

这是输出:

输出

我该如何解决这个问题?

0 投票
0 回答
129 浏览

qt - 如何借助布局在 QGraphicWidget 中排列小部件和形状?

我有一个自定义的 QGraphicsWidgets ,它绘制了一些项目,还包含一些子代理小部件:

我的问题是如何将每个组件(绘图/小部件)添加到布局中,什么时候这样做合适?术语小部件指的是 QPushButton、QProgressBar 和 QWebEngineView。绘图是指绘图功能中的形状和文本。

这是我希望自定义小部件看起来如何的草图: 在此处输入图像描述

0 投票
1 回答
203 浏览

c++ - 如何滚动自定义 QGraphicsWidgets 的所有内容?

我有一个名为“TestContentArea”的自定义 QGraphicsWidget,它被添加到 QGraphicsScene 中。在我的自定义 QGraphicsWidget 中,我添加了一些子 QGraphicsWidgets 添加到其布局中。我遇到的问题是自定义 QGraphicsWidget 的内容超出了用户可以滚动的区域。下面附上一个显示这一点的最小示例。100 个矩形中只有 11 个可见。在这个示例中,如何滚动所有 100 个子小部件?

主窗口.h:

100 个矩形中只有 11 个可见

0 投票
1 回答
579 浏览

c++ - 如何基于 QGraphicScene 缩放/调整 QGraphicsWidget 的大小?

我希望我的 QGraphicsWidget 根据场景的大小来缩放它的大小。我目前拥有的 QGraphicsWidget 是固定大小,具体取决于 sizeHint 的返回值(QGraphicsWidget 始终为 200 x 200)。下面附上最小的例子:

主窗口.h:

主窗口.cpp:

矩形小部件.h:

矩形小部件.cpp:

窗口小

在此处输入图像描述

对此的任何帮助将不胜感激。

0 投票
1 回答
149 浏览

qt - Qt Embedded:使用 QGraphicsView 和 QGraphicsWidget 在两个屏幕上显示

我正在使用嵌入式 QT 4.8。小部件基于 QGraphicsView 和 QGraphicsWidget。需要控制两个显示器。

到目前为止,我能够找到有关如何使用 QDesktopWidget(即 QWidget)控制两个显示器的建议。我认为必须有一种方法可以通过 QGraphicsWidget 使用两个帧缓冲区来控制两个屏幕。

有人可以给我一个参考,例如如何使用 QGraphicsView 和 QGraphicsWidget 以及两个帧缓冲区在两个屏幕上绘画?

谢谢,杜桑·穆德里克。