Вот решение для Windows, если кому надо:
C++ (Qt)
#ifndef WINDOWSFILETYPE_H
#define WINDOWSFILETYPE_H
 
#include <QString>
 
// Helper class to get Windows OS file type usin winapi
// as Qt does not provide SHGetFileInfo() function call wrapper
// for this purpose for now (only for file associated icons)
class WindowsFileType
{
public:
    WindowsFileType();
    QString getFileType(QString name);
};
 
#endif // WINDOWSFILETYPE_H
 
C++ (Qt)
#include "windowsfiletype.h"
 
#if defined(Q_WS_WIN)
#include <QDir>
#include <windows.h>
 
WindowsFileType::WindowsFileType()
{
 
}
 
QString WindowsFileType::getFileType(QString fileName)
{
    SHFILEINFO sfi;
 
    SHGetFileInfo(
            (LPCTSTR)(const wchar_t *)QDir::toNativeSeparators(fileName).utf16(),
            FILE_ATTRIBUTE_NORMAL,
            &sfi,
            sizeof(SHFILEINFO),
            SHGFI_TYPENAME | SHGFI_USEFILEATTRIBUTES);
 
    return QString::fromWCharArray(sfi.szTypeName);
}
 
#endif // Q_WS_WIN
 
Странно, что Qt не вставила для типов такой простой кусок кода (только для иконок почему-то), но надеюсь они это исправят в ближайших выпусках.