我按照这些简单的步骤来重现问题。在 Qt Creator 中创建一个新的 Qt 项目,一个小部件。使用其
.cpp
、.h
和 .ui
文件创建一个新的小部件类“newform”。尝试将其加载到QFile
(见下文)上,并验证是否可以用if
打开它,如果未正确加载则结束代码。这将是主类构造函数的代码(mainwindow.cpp
):
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
QFile file(":/newform.ui");
if (!file.open(QFile::ReadOnly)) {
qWarning("Failed to load UI file!");
return;
}
}
这不知何故不会加载
.ui
文件并始终触发该警告消息。
在项目中,它被加载为稍后加载
QUiLoader
,但我什至无法加载它,因为我总是得到“加载Ui文件失败!”运行时的消息。为什么?这里出了什么问题?
文件
newform.ui
不包含在.qrc
文件中,它只是与mainwindow.ui
位于同一文件夹中的文件。我必须使用 Qt 资源文件 (qrc) 吗?
这是因为所有资源都必须从 Qt 资源文件 (.qrc) 加载。创建一个qrc文件,添加前缀(我们称之为
rsc
),添加相应的.ui文件。然后像这样加载它:
QFile file(":/rsc/newform.ui"); //adding the prefix