在UI中更改窗口小部件构造函数

时间:2014-05-13 13:22:50

标签: qt user-interface widget

我在推广用于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。知道怎么做的吗?

1 个答案:

答案 0 :(得分:0)

我认为使用Qt Designer自动生成的代码无法实现这一点。

至少有两种不同的解决方案:

  • 子类QGLWidget在其MyGLWidget中设置QGLFormat(QWidget * parent = 0);构造

  • 手动创建小部件(不使用Qt Designer)。

我更喜欢后者,因为我喜欢掌控。