Qt5獲取系統文件圖標,文件路徑


獲取系統圖標:

QFileIconProvider icon_provider; QIcon icon = icon_provider.icon(QFileIconProvider::Folder);

其中可以獲取的系統圖標有:

Constant Value QFileIconProvider::Computer 0 QFileIconProvider::Desktop 1 QFileIconProvider::Trashcan 2 QFileIconProvider::Network 3 QFileIconProvider::Drive 4 QFileIconProvider::Folder 5 QFileIconProvider::File 6

獲取文件圖標/文件類型:

QFileInfo file_info(name); QFileIconProvider icon_provider; QIcon icon = icon_provider.icon(file_info);
/QString type = icon_provider.type(file_info);

注:該方法只可以獲取系統的本地圖標和本地文件類型。要通過擴展名來獲取圖標需要創建臨時文件,但不適用大量文件虛擬。

步驟:
  • 通過擴展名extension(.***)構造臨時文件QTemporaryFile
  • 通過QFileIconProvider獲取對應的圖標、類型 
  • 刪除臨時文件

獲取圖標:

QIcon FileIcon::fileExtensionIcon (const QString extension) const { QFileIconProvider icon_provider; QIcon icon; QTemporaryFile tmp_file(QDir::tempPath() + QDir::separator() + QCoreApplication::applicationName() + "_XXXXXX" + extension); tmp_file.setAutoRemove(false); if(tmp_file.open()) { QString file_name = tmp_file.fileName(); tmp_file.write(QByteArray()); tmp_file.close(); icon = icon_provider.icon(QFileInfo(file_name)); tmp_file.remove(); } else { qCritical()<<QString("failed to write temporary file %1").arg(tmp_file.fileName()); } return icon; } 

獲取類型:

QString FileIcon::fileExtensionType(const QString & extension) const {   QFileIconProvider icon_provider;   QString type;   QTemporaryFile tmp_file(QDir::tempPath() + QDir::separator() + QCoreApplication::applicationName() + "_XXXXXX" + extension);   tmp_file.setAutoRemove(false);   if(tmp_file.open())   {     QString file_name = tmp_file.fileName();     tmp_file.write(QByteArray());     tmp_file.close();     type = icon_provider.type(QFileInfo(file_name));     tmp_file.remove();   }   else   {     qCritical()<<QString("failed to write temporary file %1") .arg(tmp_file.fileName());   } return type; }

參考:http://blog.sina.com.cn/s/blog_a6fb6cc90101h2ew.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM