问题标签 [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.
c++ - 是否可以在带有 QMainWindow 的应用程序中使用 QGraphicsLayout?
我希望做的是有一个标准的 QMainWindow 类,其中包含菜单、工具栏以及布局中的各种小部件,其中一个是显示包含图形布局的图形小部件的图形视图。但是每当我将图形视图放入主窗口时,什么都不会显示。如果我使用包含 main() 函数内部布局的图形小部件创建图形视图,那么一切都是可见的。
作为测试,我使用了 Qt 基本图形布局示例中提供的工作代码,在 main 中创建了一个 QMainWindow 类,并将 QGraphicsScene、Window 和 QGraphicsView 创建移动到主窗口类。
我自己测试了主窗口类,并且像行编辑这样的小部件显示得很好。但是下面的代码,取自示例中的 main,在主窗口类中不再有效。
我只是得到一个空白区域。如果我不添加 Window 小部件,而是例如绘制一个椭圆,那么它是可见的。如果我添加一个带有背景颜色的普通 QGraphicsWidget,那么它也是可见的。只是当事物在图形小部件的布局内时,我什么也得不到。我一直在寻找答案,深入研究文档,甚至查看 Qt 源代码,看看我是否可以弄清楚我想要做的事情是否可能,但没有任何运气。
我的主窗口:
主要代码:
python - QGraphicesItem 在 hoverEnterEvent 发出信号
QGraphicsWidget
在输入 a或 a时发出信号的最佳方法/做法是QGraphicsItem
什么?
在我的 MWE 中,每当用户将鼠标悬停在 QGraphicsScene 中的某个项目上时,我想触发对MainWindow.update
、 from的调用。Square.hoverEnterEvent
问题是它QGraphicsItem/Widget
并不是真正设计用来发出信号的。相反,这些类被设置为处理从QGraphicsScene
. QGraphicsScene
处理用户选择了一个项目但似乎没有处理鼠标进入事件的情况,至少没有机制entryEvent
可以渗透到父窗口小部件/窗口。
文档状态QGraphicsItem
并非旨在发出信号,而是旨在响应由QGraphicsScene
. 相比之下,它似乎QGraphicsWidget
是为了这样做而设计的,但我不完全确定入口点应该在哪里。根据我对设计的理解,就我个人而言,我觉得QGraphicsScene
真的应该发出这些信号,但我也不确定在这种情况下入口点应该在哪里。
目前我看到以下可能的解决方案,#3 是首选方法。我想知道是否有人有更好的策略:
- 为每个 QGraphicsItem/QGraphicsWidget创建一个
QGraphicsScene
子类,我们称之为它,并在每个小部件上调用自定义触发器/信号。在这里,我必须对我打算包含在场景中的任何项目进行子类化。Scene
Scene
- 设置
Mainwindow
为场景中每个项目或场景本身的事件过滤器并调用MainWindow.update
. - 设置
Mainwindow.data
为 的子类QGraphicsScene
,我们称它为Scene
,并让它过滤它自己的发出hoverEntry
信号的事件。hoverEntry
然后MainWindow.update
根据需要连接。
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
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.
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.
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.
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
c++ - 是否可以在自定义 QGraphicsWidget 中嵌入 QWidget?
我想在我的 QGraphicswidget 中嵌入一个 QWidget,例如按钮或进度条,但我只看到了将 QWidget 添加到 QGraphicsScene 的示例,即
在我的自定义图形小部件中,我正在绘制函数中绘制文本和其他自定义形状。我认为您需要在此处添加 QWidget,但我可能错了。有谁知道如何做到这一点?
这是我重载的绘画功能:
qt - Qt Embedded:使用 QGraphicsView 和 QGraphicsWidget 在两个屏幕上显示
我正在使用嵌入式 QT 4.8。小部件基于 QGraphicsView 和 QGraphicsWidget。需要控制两个显示器。
到目前为止,我能够找到有关如何使用 QDesktopWidget(即 QWidget)控制两个显示器的建议。我认为必须有一种方法可以通过 QGraphicsWidget 使用两个帧缓冲区来控制两个屏幕。
有人可以给我一个参考,例如如何使用 QGraphicsView 和 QGraphicsWidget 以及两个帧缓冲区在两个屏幕上绘画?
谢谢,杜桑·穆德里克。