I fixed my problem with using Qwt in Qt Creator (see Can't get qwt_designer_plugin to load in Qt Creator) so I was able to change the bitmap to a QwtPlot. I then found I still didn't get a graph until I made the QwtPlotCurve a member of the class; I think it stores the data that gets drawn to the graph so needs to exist during the repaint. Finally, I fixed a memory leak and found that my array of doubles wasn't being cloned by Qt so I changed it to QVector.
The working code looks like this:
void Dialog::updateGraph(QVector<QPointF> data)
{
_curve.setPen( Qt::darkBlue );
_curve.setStyle( QwtPlotCurve::Lines );
_curve.setRenderHint( QwtPlotItem::RenderAntialiased );
_curve.setSamples(data);
ui->qwtPlot->setAxisScale(QwtPlot::xBottom, 0.0, data.size() - 1, 1);
ui->qwtPlot->setAxisScale(QwtPlot::yLeft, 0.0, 50.0, 10.0); // TODO - max
_curve.attach(ui->qwtPlot);
ui->qwtPlot->replot();
}