A thread-safe blocking FIFO queue
template &lt; typename _Msg, typename _Alloc = std::allocator&lt;_Msg&gt; &gt;


Those names are dangerous - underscore followed by capital is reserved to the implementation for any purpose.  That means they could be macros, which would give you some tricky parse errors to diagnose!  Stick to names you're allowed to use (in this case, I'd just drop the underscores).
post()

{
    QMutexLocker lock_(&amp;mx);
    que.push(msg);
    cv.wakeOne();
}


There's an inefficiency here, because waking another thread while we still hold the mutex will cause that thread to immediately block.  Better to release the mutex before waking:
{
    {
        QMutexLocker lock_(&amp;mx);
        que.push(msg);
    }
    cv.wakeOne();
}

A design choice here: should a queue be allowed to expand until it throws std::bad_alloc?  Or do we want a maximum capacity at which the write end blocks?
If you have enough C++11 support, prefer to accept the argument by value, then std::move() it to the container.  That avoids copying rvalue arguments.
wait()

void wait(DataType&amp; msg)


That's a clunky interface.  Prefer to just return the DataType.
I'm not a fan of the truncated &quot;Que&quot; name, and seem to stutter on it every time I read it.  What's wrong with the full word?