Qt 5.2中的QGLWidget :: setFormat替换

时间:2014-01-17 10:23:58

标签: qt

我正在尝试设置自定义QGLWidget的格式:

ViewportWidget::ViewportWidget(QWidget *parent)
  : QGLWidget(parent), m_glrenderer()
{
  // Change GLFormat here instead of passing it to ctor
  //   ==>> Ctor API remains unchanged so it can be called by Qt Designer generated classes
  QGLFormat glFormat;
  glFormat.setVersion(3, 2);
  glFormat.setProfile(QGLFormat::CoreProfile);
  glFormat.setSampleBuffers(true);
  glFormat.setDoubleBuffer(true);

  setFormat(glFormat); // Works but obsolete
  //this->context()->setFormat(glFormat); // Does NOT work
}

但是, QGLWidget::setFormat 已过时。用Qt 5.2替换它的正确方法是什么?

备注:

以下内容也可以正常使用:

ViewportWidget::ViewportWidget(const QGLFormat &glformat,
                               QWidget *parent)
  : QGLWidget(glformat, parent), m_glrenderer()
{
}

问题在于它对我来说不是一个理想的解决方案,因为据我所知,如果我想将自定义QGLWidget与Qt Designer集成,那么构造函数必须如下:

ViewportWidget::ViewportWidget(QWidget *parent)
  : QGLWidget(parent), m_glrenderer()
{...}

已经尝试

this->context()->setFormat(glformat);

=>空/空GLwidget

  QGLContext *ctx = this->context();
  ctx->setFormat(glformat);
  this->setContext(ctx);

=>崩溃应用程序

0 个答案:

没有答案