Qt 创建器无法加载图标
qt creator can not load icon
我是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默认使用"在不同的地方构建",因此您必须确保该图标部署在相应的目录中。
- std::原子加载和存储都需要吗
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 为什么加载SDF会导致Mobilizer创建闭环错误
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- 如何使用tinyxml2从XML加载父实体和子实体
- 如何在C++中使用pybind11加载一个pickle python列表
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- 从 wxWidgets 中的.DLL加载图标
- 如何修复加载图标()函数不显示图标?
- wxWidgets 3.1.3 图标在 mac 下加载 - ICNS 文件不可读?
- Windows/c - 从第三方EXE加载图标,用于SDL_SETWINDOWICON-崩溃
- Qt qrc 资源文件 - 无法加载图标
- Qt 创建器无法加载图标
- 动态加载窗口图标
- 如何在C Winapi中获得加载图标的大小
- 无法使用 LoadIcon WINAPI 从资源加载图标
- 我可以根据系统文件中某处的不同系统加载默认窗口图标吗?
- DrawIconEx和DrawIcon只绘制非动画的加载图标
- 在Windows程序中加载图标