title: QFuture that can be cancelled and report progress
body: <p>The <code>QFuture</code> class has methods such as <code>cancel()</code>, <code>progressValue()</code>, etc. These can apparently be monitored via a <code>QFutureWatcher</code>. However, the documentation for <code>QtConcurrent::run()</code> reads:</p>
  
  <blockquote>
    <p>Note that the QFuture returned by
    QtConcurrent::run() does not support
    canceling, pausing, or progress
    reporting. The QFuture returned can
    only be used to query for the
    running/finished status and the return
    value of the function.</p>
  </blockquote>
  
  <p>I have looked in vain for what method actually <em>can</em> create a <code>QFuture</code> that can be cancelled and report progress for a single long-running operation. (It looks like maybe <code>QtConcurrent::map()</code> and similar functions can, but I just have a single, long-running method.)</p>
  
  <p>(For those familiar with .Net, something like the <code>BackgroundWorker</code> class.)</p>
  
  <p>What options are available?</p>