如果需要动态加载.ui文件,可以使用QUiLoader机制。但是如果您在.ui文件中使用外部资源(如果.ui文件中有<resources><include location=".../filename.qrc"/></resources>
之类的东西),Qt将不会加载它。
即。如果您在Qt Designer中打开.ui文件,您将看到按钮和其他资源上的所有位图。但是如果你通过QUiLoader加载相同的.ui文件,你就不会看到按钮上的位图。
这是一个问题吗?如何解决?
答案 0 :(得分:1)
在创建.ui文件时,您是否已使用.qrc文件并不重要,该文件将始终需要添加到项目本身。
在预编译阶段使用了许多Qt工具。以下是最常用的,但还有其他:
元对象编译器(moc)从中创建moc_xxx.cpp
个文件
头文件,如果它们包含Q_OBJECT宏(或xxx.moc
if
扫描cpp文件)。
资源编译器(rc)从.qrc创建qrc_xxx.cpp
个文件
文件。
用户界面编译器(uic)从中创建ui_xxx.h
个文件
.ui文件。
任何创建源文件(.cpp)的工具都必须编译并链接到应用程序中,如果它有用的话。
答案 1 :(得分:0)
这不是问题,但具体时刻:QUiLoader永远不会从.ui文件中描述的.qrc文件加载数据。所以正确的解决方案是在当前项目中包含.qrc文件。它看起来很奇怪(因为你已经将.qrc文件的链接包含在你的.ui文件中了),但这是使用QUiLoader的具体时刻。