bug for QVTKWidget with Qt5.9 and VTK8.0

I have a bug when displaying a simple 3D vtk object in a Qt window using QVTKWidget.
Hidden surfaces and visible surfaces are not well rendered. I’m using Qt 5.9 and VTK 8.0 on an Ubuntu system.
Information on my computer:

OS Ubuntu 16.04

glxinfo | grep -i version
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
Version: 18.0.5
Max core profile version: 3.3
Max compat profile version: 3.0
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.0
OpenGL version string: 3.0 Mesa 18.0.5
OpenGL shading language version string: 1.30

The example program is:

#include “vtkActor.h”
#include “vtkRenderer.h”
#include “vtkPolyData.h”
#include “vtkPolyDataMapper.h”
#include “vtkProperty.h”
#include <vtkInteractionStyleModule.h>
#include <vtkRenderWindow.h>
#include
#include <QVTKWidget.h>
#include <vtkCubeSource.h>
#include <vtkAutoInit.h>

VTK_MODULE_INIT (vtkRenderingOpenGL2)
VTK_MODULE_INIT (vtkInteractionStyle)

int main(int argc, char** argv)
{
QApplication app( argc, argv );
QVTKWidget widget;
widget.resize(640,384);

vtkRenderWindow *renderWindow = vtkRenderWindow::New();

vtkRenderer *renderer = vtkRenderer::New();
vtkCubeSource cubeSource = vtkCubeSource::New();
vtkPolyDataMapper
g_mapper = vtkPolyDataMapper::New();
g_mapper->SetInputConnection(cubeSource->GetOutputPort());

vtkActor *actor = vtkActor::New();
actor->SetMapper(g_mapper);
actor->GetProperty()->SetColor (1,0,0);
actor->GetProperty()->SetRepresentationToSurface();

renderer->AddActor(actor);
renderer->SetBackground(0.2, 0.4, 0.8);
renderWindow->AddRenderer(renderer);

widget.SetRenderWindow(renderWindow);
widget.show();
app.exec();

renderWindow->Delete();
renderer->Delete();
actor->Delete();
g_mapper->Delete();

return 0;
}

Any suggestion is appreciated.

We usually need to change surface format in Qt to make VTK rendering work correctly. For example, on Windows you need to request OpenGL compatibility profile.