QUiLoader忽略资源文件

时间:2014-04-24 07:28:44

标签: c++ qt

如果需要动态加载.ui文件,可以使用QUiLoader机制。但是如果您在.ui文件中使用外部资源(如果.ui文件中有<resources><include location=".../filename.qrc"/></resources>之类的东西),Qt将不会加载它。

即。如果您在Qt Designer中打开.ui文件,您将看到按钮和其他资源上的所有位图。但是如果你通过QUiLoader加载相同的.ui文件,你就不会看到按钮上的位图。

这是一个问题吗?如何解决?

2 个答案:

答案 0 :(得分:1)

在创建.ui文件时,您是否已使用.qrc文件并不重要,该文件将始终需要添加到项目本身。

在预编译阶段使用了许多Qt工具。以下是最常用的,但还有其他:

  1. 元对象编译器(moc)从中创建moc_xxx.cpp个文件 头文件,如果它们包含Q_OBJECT宏(或xxx.moc if 扫描cpp文件)。

  2. 资源编译器(rc)从.qrc创建qrc_xxx.cpp个文件 文件。

  3. 用户界面编译器(uic)从中创建ui_xxx.h个文件 .ui文件。

  4. 任何创建源文件(.cpp)的工具都必须编译并链接到应用程序中,如果它有用的话。

答案 1 :(得分:0)

这不是问题,但具体时刻:QUiLoader永远不会从.ui文件中描述的.qrc文件加载数据。所以正确的解决方案是在当前项目中包含.qrc文件。它看起来很奇怪(因为你已经将.qrc文件的链接包含在你的.ui文件中了),但这是使用QUiLoader的具体时刻。