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也过时了。