Используя QVTKWidget и QOpenGLWidget в одном интерфейсе?

Я работаю над проектом, который использует собственный подклассQOpenGLWidget отображать некоторые визуализации. В концеpaintGL() метод вызывает виджетupdate() метод для запуска события перерисовки, если он виден. Теперь я хочу добавить дополнительныйQVTKWidget на мой пользовательский интерфейс, и я делаю это, используя что-то вроде этого:

QVBoxLayout* layout = findChild<QVBoxLayout*>("layout_simulation");
QVTKWidget* widget = new QVTKWidget();

// Setup arrow
vtkSmartPointer<vtkArrowSource> arrowSource = vtkSmartPointer<vtkArrowSource>::New();

[more VTK stuff...]

widget->GetRenderWindow()->AddRenderer(renderer);
renderer->AddActor(arrowActor);
renderer->ResetCamera();

// Add widget to ui
layout->addWidget(widget);

Виджет VTK добавлен в пользовательский интерфейс и работает так, как задумано. Проблема в том, что как только я используюlayout->addWidget() методвсе мои другиеQOpenGLWidget объекты становятся черными и ничего не отображать. Также этот черный не цвет фонаVTKRenderer потому что другие виджеты все еще черные, даже если я изменю цвет фона виджета VTK. Я проверил иpaintGL() по-прежнему вызывается в цикле, но ничего не отображается. Я почти уверен, что я не использовал плохой код OpenGL в своем подклассе виджетов, поэтому я думаю, что это как-то связано с внутренней инициализациейQOpenGLWidget а такжеQVTKWidget, То же самое происходит, если я опускаю все вызовы VTK и просто добавляю только что созданныйQVTKWidget.

Самое смешное, что если я опущуlayout->addWidget() вызов VTK открывает рендерер в отдельном окне, и все виджеты OpenGL работают без проблем. Но, конечно же, я хочу встроить рендер в мой интерфейс.

У кого-нибудь есть опыт с этим, или вы знаете какие-либо подводные камни, с которыми я мог бы столкнуться, или есть какие-то общие проблемы, которые могут вызвать это?

Кстати, я использую основной профиль OpenGL 3.3 с пользовательскими шейдерами дляQOpenGLWidget подкласс.

РЕДАКТИРОВАТЬ: я удалил свой запрос для профиля ядра 3.3, и теперь он использует профиль совместимости 4.4. Я думаю, что теперь он использует тот же профиль, что иVTKRenderer так что это может быть исключено как источник ошибки.

Ответы на вопрос(1)

Ваш ответ на вопрос