将QGLWidget添加到QMainWindow
Adding a QGLWidget to a QMainWindow
我有一个带有QGraphicsView的MainWindow类,我想把它添加到MainWindow中,这样我就可以看到实际发生了什么。我现在要做的就是渲染一个立方体。
主要功能
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
主窗口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
状态那样显示黑色背景。
我在这里做错了什么?
glClearColor仅设置将用于清除屏幕的颜色。要真正清除屏幕,您必须调用glCear函数:
glClear(GL_COLOR_BUFFER_BIT);
glClearDepth也是如此-它只设置要清除的深度值。要真正清除它,请使用相同的glCler函数。你可以用一个glClear调用来清除颜色缓冲区和深度缓冲区,如下所示:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 如何在C++中从两个单独的for循环中添加两个数组
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 如何仅为一个函数添加延迟
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 如何将更多文件夹添加到c++include路径
- 如何将元素添加到数组的线程安全函数?
- QT通过C++添加映射QML项目
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 只能向C++添加一定数量的字符
- 将QMainWindow或Widget添加到另一个Widget-访问成员
- Qt将非菜单栏键盘快捷键添加到QMainWindow
- 将QGLWidget添加到QMainWindow
- 如何在QMainWindow中添加调整大小选项,这是QT中的无框窗口
- 将QTextEdit对象添加到QMainWindow中
- 如何在QMainWindow布局中添加小部件