c++ - 如何引用外部文件,即 Win/macOS Qt 项目中的图像?

标签 c++ windows macos qt qt5

我们可以加载图像到 QPixmap

QPixmap("image.png");

然后我们将 image.png 放在根项目文件夹中,它可以在 Windows 上运行。我的意思是,可执行文件会找到图像。

我们也可以在 macOS 上轻松编译 Qt 项目。但是 macOS 可执行文件是不同的,它是一种文件夹,实际的可执行文件在下面,实际上在相对于图像的不同路径中。因此在运行时不会找到图像。

处理该问题的一种方法是

#ifdef Q_OS_MACX
// Code that will only be compiled under MAC OS X
#endif

然后我们在代码库中到处重复这个,问题就会得到解决。有没有替代的单发解决方案?这样就没有必要更改所有代码库,或许可以让 macOS 可执行文件认为它在另一条路径中?

引用:https://amin-ahmadi.com/2016/07/26/how-to-configure-a-single-qt-project-for-different-operating-systems/

最佳答案

我可以看到两种实现它的方法。

第一个是获取可执行文件夹位置(使用 main 参数)并使用相对于此文件夹的路径。
我已经在这里提供了一个示例:How can i access resources in c++ without setting the full path .

第二个是使用 Qt resource system .
它允许您将资源嵌入到可执行文件中。

PS(编辑): 我回答的有点晚了(写的时间太多了:))。已经给出的答案很好。

关于c++ - 如何引用外部文件,即 Win/macOS Qt 项目中的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57920185/

相关文章:

c++ - 二叉树的列表实现是否可扩展?

c++ - 在 Linux 或 Windows 上学习 C++?

windows - 为什么 Windeployqt 输出不需要的文件,如何删除它们?

ruby-on-rails - 如何强制 capybara 下载到我指定的目录而不是 Firefox 中的默认下载目录?

c++ - 我的操作系统中的 mykernel.iso 执行错误

PHP openssl_public_encrypt 导致页面超时/连接重置?

swift - 在表中显示对象状态(图标)

macos - 开发 Mac 应用程序时如何使用 Xcode 制作无限窗口?

PHP curl : could not resolve host (over VPN)

c++ - 在使用 cmake 构建的项目中添加头文件和 .cpp 文件