title: Calls to QDBus freezing UI
body: <p>I have an application which using <code>QDBus</code> connects to a Bluetooth printer. After pairing the printer, I call <code>Connect</code> on <code>org.bluez.Serial</code> interface. I realised this is actally freezing the UI until the call returns. I created a worker object and then moved to a separate <code>QThread</code> which didn't solve the problem either.</p>
  
  <pre><code>Worker* w = new Worker();
  QThread* thread = new QThread();
  
  w-&gt;moveToThread(thread);    
  connect(thread, &amp;QThread::started, w, &amp;BluetoothPrinter::Worker::print);
  connect(w, &amp;BluetoothPrinter::Worker::finished, thread, &amp;QThread::quit);
  connect(w, &amp;BluetoothPrinter::Worker::finished, w, &amp;BluetoothPrinter::Worker::deleteLater);
  connect(thread, &amp;QThread::finished, thread, &amp;QThread::deleteLater);
  
  connect(w, &amp;BluetoothPrinter::Worker::destroyed, []() { qDebug() &lt;&lt; "worker destroyed"; });
  connect(thread, &amp;QThread::destroyed, []() { qDebug() &lt;&lt; "thread destroyed"; });
  thread-&gt;start();
  </code></pre>
  
  <p>This is how I call <code>Connect</code> in <code>BluetoothPrinter::Worker::print</code> function.</p>
  
  <pre><code>QDBusInterface dbusSerialInterface("org.bluez", objPath, "org.bluez.Serial", QDBusConnection::systemBus(), this);
  if (dbusSerialInterface.isValid()) {
      QDBusMessage reply = dbusSerialInterface.call("Connect", "spp"); // freezes UI here
      if (reply.type() == QDBusMessage::ErrorMessage || reply.arguments().isEmpty()) {
          emit finished();
          return;
      }
      ...........
  }
  </code></pre>
  
  <p>Thanks.</p>