Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅从Qt中给定的MIME类型(没有文件本身)获取文件图标_Qt_Qt5_Mime Types_Qfileinfo - Fatal编程技术网

仅从Qt中给定的MIME类型(没有文件本身)获取文件图标

仅从Qt中给定的MIME类型(没有文件本身)获取文件图标,qt,qt5,mime-types,qfileinfo,Qt,Qt5,Mime Types,Qfileinfo,好的,我知道这门课。我也知道(和)。但令我惊讶的是,我无法在两者之间找到简单的联系 因此,我需要的是获得一个图标,该图标由操作系统用于给定类型的文件。通常,这是这样做的: QIcon icon = QFileIconProvider().icon(QFileInfo("/path/to/some.file")); 但是,如果我只想获得一个给定MIME类型的图标,而不引用特定的文件,该怎么办?比如说,我的应用程序在多个设备上使用附加文件和同步;在某些设备上,附加的文件可能不存在,但我知道该文件的

好的,我知道这门课。我也知道(和)。但令我惊讶的是,我无法在两者之间找到简单的联系

因此,我需要的是获得一个图标,该图标由操作系统用于给定类型的文件。通常,这是这样做的:

QIcon icon = QFileIconProvider().icon(QFileInfo("/path/to/some.file"));
但是,如果我只想获得一个给定MIME类型的图标,而不引用特定的文件,该怎么办?比如说,我的应用程序在多个设备上使用附加文件和同步;在某些设备上,附加的文件可能不存在,但我知道该文件的MIME类型,因此我仍然希望我的应用程序仅使用MIME类型信息来显示正确的文件图标

作为一个临时解决方案,我发现如果我在上面的代码字符串中将一个不存在的文件传递给QFileInfo,它确实会检索到一个正确的图标(显然,纯粹是从这个不存在的文件的扩展名检索到的),至少在Linux中是这样。但这种方法并没有被记录在案,也不能保证它总是有效的


所以我需要一些可以作为不存在的方法
QFileIconProvider()。icon(QMimeType&)

可能有用。是的,我已经看到了。但是使用此函数返回值的唯一方法是将其传递给
QIcon::fromTheme()
,但是它仅在X11中工作,并且我的应用程序应该是跨平台的(事实上,即使在Xubuntu 16.05中,此函数返回类似“application pdf”的字符串,但是
QIcon::fromTheme()
不会生成有效的图标),不完全是。默认情况下,它仅适用于
X11
系统。但正如文件中所述。如果你想在其他平台上使用它,“……你必须在你的一个主题搜索路径()中绑定一个兼容的主题,并设置适当的主题名()”,所以这是额外的工作,但当然(我认为)是可以做到的。