C++ GLUT警告:第二次调用glutInit

C++ GLUT警告:第二次调用glutInit,c++,qt,opengl,C++,Qt,Opengl,我正在使用QT和OpenGL的组合创建一个程序。当我尝试初始化OpenGL部分时,我得到一个警告:GLUT warning:glutInit被第二次调用。在我的程序中,我只调用它一次。该程序可以在基于Linux的机器上运行,但不能在Mac上运行 OpenGL最初是从DrawOpTable函数中调用的: n = ui->opTableSize->currentText().toInt(); basePatternCode = ui->basePatternChoose->c

我正在使用QT和OpenGL的组合创建一个程序。当我尝试初始化OpenGL部分时,我得到一个警告:GLUT warning:glutInit被第二次调用。在我的程序中,我只调用它一次。该程序可以在基于Linux的机器上运行,但不能在Mac上运行

OpenGL最初是从DrawOpTable函数中调用的:

n = ui->opTableSize->currentText().toInt();
basePatternCode = ui->basePatternChoose->currentText().toStdString().c_str()[0];

ui->modAddWidget->close();

ModNAdd modA(n);
modA.fillTable();
tiles = new Tile*[n];
for(int i = 0; i < n; i ++)
    tiles[i] = new Tile(m_color, basePatternCode);
drawOpTableFunction(modA.getTable(), tiles, n);
初始化gl\u窗口():


如您所见,glutInit()只被调用一次。

如果您使用的是Qt,为什么要引入GLUT?GLUT只是一些第三方框架。GLUT和Qt正在填充同一个点。如果您使用的是Qt,请不要使用GLUT。很简单。

您是否多次调用
init\u gl\u window
?在它上面放一个print语句或断点。这可能是因为Qt在内部某个地方调用了这个函数——只需将它去掉,它就会工作
void drawOpTableFunction(int **ta, Tile **ti, int en)
{
    table1 = ta;
    tiles1 = ti;
    n1 = en;
    HEIGHT = ((n1*50));
    WIDTH = ((n1*50));

    init_gl_window();
}
void init_gl_window()
{
    char *argv[] = {programName};
    int argc = sizeof(argv) / sizeof(argv[0]);
    glutInit(&argc, argv);
    glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE );
    glutInitWindowSize(WIDTH,HEIGHT);
    glutInitWindowPosition(100,100);
    glutCreateWindow(programName);
    init();

    glutDisplayFunc(drawWindow);
    glutReshapeFunc(reshape);
    glutMainLoop();
}