Just had the same problem, here are my findings:
QRemoteObjectPendingReply inherits from QRemoteObjectPendingCall.
Therefore it inherits the bool waitForFinished(int timeout = 30000) method.
Example:
// DeviceManagerReplica* m_deviceManager
// class DeviceManagerReplica created via rep-compiler
QRemoteObjectPendingReply<QStringList> result = m_deviceManager->availableDevices();
result.waitForFinished();
qCDebug(lc) << result.returnValue();
waitForFinished() seems to be a sync call, thus the m_deviceManager instance should not live in the main GUI-thread.
Hope this helps.