问题标签 [qgraphicsproxywidget]

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 投票
0 回答
146 浏览

python - 当鼠标悬停在 QGraphicsProxyWidget 上时,QGraphicsView 的行为不同

我有一个使用 QGraphicsView 的 pyside2 GUI。

我使用 setDragMode(QGraphicsView.ScrollHandDrag) 使视图可拖动,但我在 mouseReleaseEvent 上使用 viewport().setCursor(Qt.ArrowCursor) 覆盖光标,以避免经常使用张开手而不是普通箭头光标。此处对此进行了解释:Changing cursor in a QGraphicsView (in c++)

在 GUI 中还有一个带有 QLabel 的 QGraphicsProxyWidget。当鼠标放在 ProxyWidget 上时, viewport().setCursor(Qt.ArrowCursor) 不起作用(调用了 moseReleaseEvent,所以我知道调用了 setCursor),当鼠标离开 ProxyWidget 时,张开的手光标显示而不是箭头光标。

当鼠标放在 QGraphicsView 中的所有其他位置时,一切都按预期工作。

有谁知道为什么当鼠标放在 proxyWidget 上时 setCursor 的行为会有所不同?

在 QGraphicsView 中:

InfoBox(如您所见,我尝试设置一些标志但没有成功):

0 投票
0 回答
429 浏览

qt - 如何将 QOpenGLWidget 添加到 QGraphicsScene?

我的 main.cpp

我的 MyGLWidget.h

MyGLWidget.cpp

输出图像。 在此处输入图像描述

似乎没有调用 void MyGLWidget::paintGL() 。我怎么称呼paintGL?我可以将其设置为自动更新渲染吗?

另外,我得到了奇怪的例外。

在此处输入图像描述

如果我做出这样的改变,

我明白了。这意味着 OpenGL 渲染工作正常。 在此处输入图像描述

0 投票
1 回答
229 浏览

qt - 添加到 QGraphicsScene 时如何更新 OpenGL 绘图(QOpenGLWidget)?

我的实现基于这个示例。https://doc.qt.io/qt-5/qtopengl-2dpainting-example.html

该示例所做的是渲染/动画 2 个图像。一个使用原生 qt 功能渲染,另一个使用 OpenGL 渲染。这里的所有都是它的。正在绘制的图像完全相同。

该示例工作正常。我可以看到两个图像都有动画。然后,当我尝试通过在 QGraphicsScene 中添加一个 Window 类(包含 QOpenGLWidget)来进行更改时;QOpenGLWidget 停止自我更新。

原始 main.cpp

更改了 main.cpp

这是输出。

在此处输入图像描述

完整的源代码可在此处获得。 https://github.com/syaifulnizamyahya/QT2dpainting

0 投票
1 回答
193 浏览

c++ - 为什么 QGraphicsProxyWidget 在放入 QGraphicsView 后无法正确调整大小?

我有一个QListWidget和一个QGraphicsView两个子类来覆盖他们的一些成员。我准备了一个最小的可验证示例来显示我遇到的问题。

QListWidget我可以拖放由 a 表示的特定字段QTableWidget并将它们放入 aQGraphicsView中,为了做到这一点,我正在使用QGraphicsProxyWidget如下所示的方法。

值得一提的是,QGraphicsRectItem它用于在绿色周围移动QTableWidget以及调整其尺寸。

问题:从那里拖动QListWidget不是问题。但是放入QGraphicsView是一个问题,因为如您所见,QGraphicsRectItem它就在QTableWidget.

为了完整性,可以在此处和下方找到最小可验证示例:

代理1

但是,只要我用 的尺寸触摸调整本身的QSizeGrip右下角:QGraphicsProxyWidgetQGraphicsRectItemQTableWidgetItem

代理2

在最小可验证示例下方:

主文件

主窗口.h

主窗口.cpp

选项列表.h

选项列表.cpp

customtablewidget.h

customtablewidget.cpp

最后问题出在哪里:

场景.h

场景.cpp

我对这个主题进行了广泛的研究,并遇到了另一个非常有用的帖子,因为它让我解决了内部的调整大小问题,QGraphicsView但它并没有让我解决QGraphicsView.

我提到的帖子继续对所需的小部件进行子类化并添加一个名为的附加信号sizeChanged();,这就是我所做的。

我还在声明之前的 AND 之后移动了以下语句QSizeGrip

但这并没有引起任何变化,我仍然有这个错误。

感谢您指出解决此问题的正确方向。

0 投票
1 回答
208 浏览

qt - 如何使用箭头将 QTableWidget 单元格的 QRadioButton 与另一个 QTableWidget 单元格连接?

我有一个QListWidget和一个QGraphicsView两个子类来覆盖他们的一些成员。我准备了一个最小的可验证示例,显示了我在这里遇到的问题

QListWidget我可以拖放特定字段(由 QTableWidget 表示)并将它们放入 aQGraphicsView中,为了做到这一点,我使用QGraphicsProxyWidget如下所示的方法。

问题

现在,如何将a 的单元QRadioButton格内的2QTableWidget与另一个单元格的另一个单元格连接起来QTableWidget

值得一提的是,QGraphicsRectItem它用于在绿色周围移动QTableWidget以及调整其尺寸。

在我能够到达的结果下方:

pr3

低于我一直试图达到的预期结果:

pr4

下面是代码最重要的部分:

场景.h

场景.cpp

图表项.h

图表项.cpp

箭头.h

箭头.cpp

到目前为止我为解决问题所做的工作:

1)我看到这篇文章有助于理解如何做到这一点的最初想法,但它并没有真正提供一种方法,或者关于如何最好地进行的实施想法

2)我研究了官方文档,在问这个问题之前,我浏览了提供的整个图表场景示例,并了解了如何创建Arrow对象。关于这方面的文档非常好,让我了解了图形行项目是如何形成的。但是,我无法(回到我的示例)如何“意识到”QRadioButton我正在尝试将其中心用作箭头广告的起点,因此,我如何“意识到”QRadioButton另一个单元格中的目的地它必须在那里连接吗?

下面是我的意思:

pr5

所以基本上QRadioButton改变颜色(或风格)的起点和到达点也改变颜色。

3)我认为该Arrow对象必须在子类中创建,QGraphicsScene因为它已经处理了mouse events.

4)尽管到目前为止我已经尝试过,但我找不到任何其他有用的帮助。虽然我仍在研究如何做到这一点。

如果有人遇到过同样的情况,请提供有关如何更好地解决此问题并找到解决此问题的方法的指导。

0 投票
0 回答
45 浏览

c++ - 如何更改已经存在的 QGraphicsProxyWidget 的背景颜色?

我已经用 QGraphicsProxyWidgets 形成了一个网格布局,它们是添加到场景中的 Qlabel 小部件。我想通过单击按钮来更新小部件的背景颜色。

如何访问 QLabel 以便更改背景颜色?我尝试使用调色板,但它导致程序崩溃。

0 投票
1 回答
56 浏览

c++ - 如何修复“无法使用'QGraphicsLayoutItem *'类型的右值初始化'QGraphicsProxyWidget *'类型的变量”?

我想解析QGraphicsGridLayout,但得到这个错误。问题是我能够添加QGraphicsProxyWidget为项目但无法检索它。我想知道如何QGraphicsLayoutItem*QGraphicsProxyWidget*这行mainwindow.cpp代码中将 a 转换为auto *currentWidget = static_cast<QGraphicsProxyWidget*>(layout->itemAt(row, col));。使用它时static_cast返回一个NULL指针,请帮忙。

主窗口.h:

主窗口.cpp: