|
4
|
| moswald Jarod42 · 技术社区 · 16 年前 |
|
|
1
4
自定义qgraphicsView的setupviewport槽可用于调用qglwidget上的updategl(),这将导致调用initializegl()。
|
|
|
2
2
因此,我发现qgraphicsView在qglwidget视区上安装了一个自定义事件过滤器,这样它就不会看到初始化/调整大小/重新绘制事件。这样做可能是为了使它能够正确地与defectground()等一起工作。 我当前的最佳解决方案是在qgraphicsView::ResizeEvent()/etc中捕获所需的事件,或者在qglwidget派生类上安装自定义事件过滤器,以便在qgraphicsView的自定义事件过滤器吞没它们之前捕获Resize/Paint/etc事件。 |
|
|
3
1
痛苦,痛苦,…将从qglwidgets派生的widgets集成到qgraphicsView中并不有趣,我知道qt的某些部分肯定是比较麻烦的部分之一。我最终使用了 kgllib (在kde之外)称为widgetproxy,它是围绕qglwidget的一个非常好的包装器。我修改了它以满足我的需要,但在大多数一般情况下,如果您想在QgraphicsView中使用从QGLwidget派生的现有类,并在其上绘制其他内容,则可以很好地工作。 |
|
|
4
0
|
|
|
5
0
我要继续回答我自己的问题。这不是最佳的,但这就是我解决问题的方法。 而不是
我改成了这个:
CustomContext是从QGLContext派生的类。我已经重写了create成员,如下所示:
我不认为这是实现这一点的最佳方法,但它比完全没有特定初始化步骤的替代方法要好。我还是很高兴有人能留下更好的答案! |