gpt4 book ai didi

qt - 使用自定义 QGLWidget 调用 Qt 的 QGraphicsView::setViewport

转载 作者:行者123 更新时间:2023-12-04 13:05:22 30 4
gpt4 key购买 nike

我以前从 QGLWidget 派生,如下所示:

class MyGLWidget : public QGLWidget
{
public:
// stuff...

virtual void initializeGL() { /* my custom OpenGL initialization routine */ }

// more stuff...
};

但是,我发现如果我尝试使用我的自定义 QGLWidget 作为视口(viewport)来初始化 QGraphicsView,则不会调用 initializeGL(在 Qt 库中设置断点,QGLWidget::initializeGL() 在创建时也不会被调用)。
// initializeGL, resizeGL, paintGL not called
ui.graphicsView->setViewport(new MyGLWidget(QGLFormat(QGL::DoubleBuffer)));

// initializeGL, resizeGL, paintGL *still* not called
ui.graphicsView->setViewport(new QGLWidget(QGLFormat(QGL::DoubleBuffer)));

放置当前驻留在 MyGLWidget::initializeGL() 中的代码的正确位置在哪里?

最佳答案

自定义 QGraphicsView 的 setupViewport 插槽可用于调用 QGLWidget 上的 updateGL(),这将导致调用 initializeGL()。

class MyGraphicsView : public QGraphicsView
{
//... The usual stuff

protected slots:
virtual void setupViewport(QWidget *viewport)
{
QGLWidget *glWidget = qobject_cast<QGLWidget*>(viewport);
if (glWidget)
glWidget->updateGL();
}

};

关于qt - 使用自定义 QGLWidget 调用 Qt 的 QGraphicsView::setViewport,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1112167/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com