Вот решение для 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 не вставила для типов такой простой кусок кода (только для иконок почему-то), но надеюсь они это исправят в ближайших выпусках.