Qt 创建器无法加载图标

qt creator can not load icon

本文关键字:加载 图标 创建 Qt      更新时间:2023-10-16

我是QT的初学者,我试图向工具栏添加一个动作,我写了如下:

toolbar->addAction(QIcon("/icons/new.png"), "New File");

但是,无法加载图像。这与我的调试路径有关吗?我可以看到按钮,但没有图像。 这些代码在测试中.cpp我的图标文件夹与测试位于同一路径中.cpp

路径很有趣。

如果您在Linux上,则只需指定驱动器的根目录有一个名为icons,其中有一个名为new.png

如果您在网站上使用这种路径,它将切断除域名和子域名之外的所有内容。

example.com/path/to/some/folder/index.html,进程链接到/icons/new.png,你最终得到:example.com/icons/new.png

正确处理路径的最佳方法是对相对路径使用通用表示法(在大多数情况下......在某些情况下,绝对路径是有意义的)。

./表示我当前所在的文件夹,即工作目录。

../是指我上面的文件夹。

前导/表示在Unix系统上可能的最高文件夹或根文件夹。 它也类似于为文件提供绝对路径。

没有前导.../表示与./或工作目录中的相同。

关于这一点还有更多的规则。 请参阅维基条目:

http://en.wikipedia.org/wiki/Path_(计算)

在Qt中还有资源系统,它将文件嵌入到exe本身中,并且可以在程序上为您提供更难更改的图像或图形。

访问此内容的表示法是:

:/表示 qResource 系统的根。

如果您确实决定有理由使用反斜杠,请务必对其进行转义。 通常,Qt会接受任何带有反斜杠的输入,并即时将其转换为正斜杠。

因此,要仔细检查文件是否存在,请使用QFile file("icons/new.png");后跟if(!file.exists()){ qDebug() << "File is not found!" << file.fileName(); }

有时,我发现当这种情况发生时,查看我的程序在哪里很有帮助。 使用system("dir");qDebug() << QDir::currentPath();

http://doc.qt.io/qt-5.5/qdir.html#currentPath

您还可以通过在Qt Creator中查看项目的项目属性来查看初始工作目录:

Projects (tab) > Run (tab) > Run > Working directory:

通常它是源代码所在位置和.pro文件所在位置的根。

希望有帮助。

如果您使用的是Qt资源,则需要一个冒号:

toolbar->addAction(QIcon(":/icons/new.png"), "New File");`

如果不使用资源,则应使用相对路径。请记住,Qt Creator默认使用"在不同的地方构建",因此您必须确保该图标部署在相应的目录中。