Qt5.2中的QGLWidget::setFormat替换

Qt5.2中的QGLWidget::setFormat替换,qt,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 ge

我正在尝试设置自定义
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
}
但是,已过时。用
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);

=>使应用程序崩溃

尝试通过
QGlContext::setFormat()
设置格式,然后
QGLWidget::setContext()
我做了:QGlContext*ctx=this->context();ctx->setFormat(glformat);这->设置上下文(ctx);但现在它使应用程序崩溃了。我刚刚注意到QGLwidget::setContext也过时了。