我有一个带有 QGraphicsView 的 MainWindow 类,我想将它添加到 MainWindow 中,这样我就可以看到实际发生了什么。我现在要做的就是渲染一个立方体。
主功能
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
主窗口控件
MainWindow::MainWindow( QWidget *parent )
: QMainWindow( parent ),
mUi( new Ui::MainWindow ),
mDisplay( new GLWidget ),
mScene( new QGraphicsScene )
{
mUi->setupUi( this );
//mScene->addWidget( mDisplay );
QGraphicsView *graphicsView = new QGraphicsView;
//QGraphicsView::setupViewport( this );
graphicsView->setViewport( mDisplay );
graphicsView->show();
}
GLWidget::initializeGL
void GLWidget::initializeGL( void )
{
glMatrixMode( GL_COLOR );
glClearColor( 0.0, 0.0, 0.0, 1.0 );
glMatrixMode( GL_MODELVIEW );
glClearDepth( 1.0f );
glEnable( GL_VERTEX_ARRAY );
glEnable( GL_NORMAL_ARRAY );
glEnable( GL_DEPTH_TEST );
glEnable( GL_CULL_FACE );
glShadeModel( GL_SMOOTH );
glEnable( GL_LIGHTING );
glEnable( GL_LIGHT0 );
glEnable( GL_MULTISAMPLE );
static GLfloat lightPosition[ 4 ] = { 0.5, 5.0, 7.0, 1.0 };
glLightfv( GL_LIGHT0, GL_POSITION, lightPosition );
qDebug() << "GL Initialized" << '\n';
}
如您所见,glClearColor
应该将背景设置为黑屏。问题是当我渲染它时,我看到两个窗口弹出而不是一个。虽然MainWindow
该类有一个应该GLWidget
呈现QGraphicsView
. 两个窗口都只显示白屏;其中一个至少应该显示为黑色背景,就像glClearColor
美国一样。
我在这里做错了什么?