我在为GUI推广QGLWidget时遇到了Qt问题。因为QGLWidget的构造函数是
GLWidget::GLWidget( const QGLFormat& format, QWidget* parent )
: QGLWidget( format, parent ),
m_vertexBuffer( QGLBuffer::VertexBuffer ) {}
对象应该像这样被实例化
QGLFormat glFormat;
glFormat.setVersion( 3, 3 );
glFormat.setProfile( QGLFormat::CoreProfile );
glFormat.setSampleBuffers( true );
GLWidget w( glFormat, parent );
但是ui_mainwindow。h会自动使用
widget = new GLWidget(centralWidget);
不能修改,因为每次UI重新编译时都会创建新的ui_mainwindow.h。因此,我可能不得不在maindwindow.cpp中说明,GLWidget的实例化方式与标准构造函数不同,但要使用QFormat。知道怎么做吗?
我相信这不能用Qt Designer自动生成的代码来实现。
至少有两种不同的解决方案:
- 子类QGLWidget设置QGLFormat在它的MyGLWidget(QWidget* parent = 0);构造函数。
或
- 手动创建小部件(没有Qt设计器)。
我更喜欢后者,因为我喜欢控制。