One way you could try is to create two lists: one with all entries and one without the symlinks. Then convert both to QSet and subtract the two sets, you should then have a QSet containing only the symlink.

Yeah but iterating twice over a directory will probably be net loss due to the IO overhead.
I haven't looked in the sources but knowing the corresponding API in Windows my guess would be that the way you have it is an ok way to do it. These APIs usually just iterate over the whole directory and any filtering Qt does is applied on top of it so you might just as well do it yourself the way you need to.