According to this discussion on the vtk mailing list the widget and the view can be connected like this:
widget->SetRenderWindow(view->GetRenderWindow());
view->SetInteractor(widget->GetInteractor());
It seems like you're missing that second line. See below for a complete example.
#include <QtWidgets>
#include <QVTKWidget.h>
#include <vtkSmartPointer.h>
#include <vtkDoubleArray.h>
#include <vtkChartXY.h>
#include <vtkTable.h>
#include <vtkPlot.h>
#include <vtkContextView.h>
#include <vtkContextScene.h>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// Prepare plot data
auto table = vtkSmartPointer<vtkTable>::New();
table->AddColumn(vtkSmartPointer<vtkDoubleArray>::New());
table->AddColumn(vtkSmartPointer<vtkDoubleArray>::New());
table->GetColumn(0)->SetName("X");
table->GetColumn(1)->SetName("Y");
table->SetNumberOfRows(100);
for(int i = 0; i < 100; ++i)
{
table->SetValue(i, 0, i);
table->SetValue(i, 1, i*i);
}
// Create chart, view and widget
auto chart = vtkSmartPointer<vtkChartXY>::New();
auto line = chart->AddPlot(vtkChart::LINE);
line->SetInputData(table, 0, 1);
auto view = vtkSmartPointer<vtkContextView>::New();
view->GetScene()->AddItem(chart);
auto widget = new QVTKWidget();
view->SetInteractor(widget->GetInteractor());
widget->SetRenderWindow(view->GetRenderWindow());
widget->show();
return app.exec();
}