У меня есть класс MainWindow с QGraphicsView, который я хотел бы добавить в MainWindow, чтобы я мог видеть, что на самом деле происходит. Все, что я сейчас пытаюсь сделать, это сделать куб.
Основная функция
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
MainWindow Ctor
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
.
Что я здесь не так делаю?