Qt 资源文件打开失败的问题
首先,Qt 的资源文件需要使用 Q_INIT_RESOURCE
宏进行初始化,参数为 qrc
文件的文件名,例如:
Q_INIT_RESOURCE(theme); // 初始化 theme.qrc
Q_INIT_RESOURCE(icon); // 初始化 icon.qrc
并且,这个宏必须在全局命名空间下调用,例如:
static inline void initResource()
{
Q_INIT_RESOURCE(theme); // 初始化 theme.qrc
Q_INIT_RESOURCE(icon); // 初始化 icon.qrc
}
namespace DemoNamespace
{
class DemoClass
{
public:
DemoClass()
{
initResource(); // 调用初始化函数
}
};
};
并且,可以使用 Q_CLEANUP_RESOURCE
宏来显式删除资源。
Q_INIT_RESOURCE
仅在将资源构建为静态库时是必须的,在构建动态库和应用程序中时可以省略。
但是我遇到的是另一个问题 —— Qt 的资源集合文件不能重名
在库中创建了名为 theme.qrc
的资源集合文件,之后在应用程序中再次创建一个名为 theme.qrc
的资源集合文件。库的 theme.qrc
会失效。
这个问题仅在 Linux 上存在,而在 Windows 上不存在。因此无法确定是 Feature 还是 Bug。