如何在 MacOS 上获取文件类型的图标?
Posted
技术标签:
【中文标题】如何在 MacOS 上获取文件类型的图标?【英文标题】:How to get the icon for a file type on MacOS? 【发布时间】:2021-12-19 11:37:16 【问题描述】:在 Linux 上,我可以使用这个管道 QMimeDatabase::mimeTypeForFile
> QMimeType::iconName
> QIcon::fromTheme
来获取文件的图标。 Afaik 后者仅适用于 Linux。
如何在 macOS 上获取 mimetype 的图标?我必须使用icon(for:)
并自己创建像素图,还是有更好的方法?
【问题讨论】:
解决方案对您有用吗? 【参考方案1】:解决方案
要获取文件的图标,请使用 QFileIconProvider::icon
和 QFileInfo
,如下所示:
QIcon fileIcon = QFileIconProvider().icon(QFileInfo(fileName));
示例
这是我为您编写的一个简单示例,用于演示建议的解决方案:
#include <QApplication>
#include <QFileIconProvider>
#include <QFileDialog>
#include <QFileInfo>
#include <QBoxLayout>
#include <QPushButton>
class Widget : public QWidget
public:
Widget(QWidget *parent = nullptr) : QWidget(parent)
auto *l = new QVBoxLayout(this);
auto *btnOpen = new QPushButton(tr("Open File"), this);
btnOpen->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
l->addWidget(btnOpen);
connect(btnOpen, &QPushButton::clicked, this, &Widget::onFileOpen);
resize(300, 300);
private slots:
void onFileOpen()
const QString &fileName(QFileDialog::getOpenFileName(this, tr("Open File")));
if (fileName.isEmpty())
return;
auto *btnOpen = static_cast<QPushButton *>(sender());
btnOpen->setIcon(QFileIconProvider().icon(QFileInfo(fileName)));
;
int main(int argc, char *argv[])
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
【讨论】:
以上是关于如何在 MacOS 上获取文件类型的图标?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PyQt/PySide 获取与特定文件类型关联的图标?