Если у вас нет особых требований, QMimeDatabase
- лучший выбор для ваших нужд. Я рекомендую вам попробовать ответ @ nitro2005. Вы все еще можете выполнить эту работу вручную, используя QFileIconProvider
.
Если вы хотите выполнить эту работу своими руками, но по какой-то причине вы не можете использовать QMimeDatabase
, есть решение, работающее для Linux / X11. Вы можете использовать QFileInfo(const QString &file)
для получения суффикса / расширения файла (не обязательно, если QString, который вы передали конструктору QFileInfo
, является существующим путем или нет), а затем получите форму MIME-типа с суффиксом. получить QIcon с помощью QIcon::fromTheme
, и все готово.
Например, следующий код проверит, является ли суффикс файла «.bin», если есть, присваивает ему значок из системной темы с типом MIME «application-x-исполняемый». На самом деле это просто ведение базы данных MIME самим собой.
QString fileName("example.bin");
QFileInfo fi(fileName);
if (fi.suffix().compare(QString("bin")) == 0) {
item->setIcon(QIcon::fromTheme("application-x-executable",
provider.icon(QFileIconProvider::File)));
}
Чтобы получить ссылку на строку типа MIME для вашей «базы данных MIME», ознакомьтесь со спецификацией именования значков freedesktop .