如何用QFile读取项目内部的文件

问题描述 投票:0回答:1

我按照这些简单的步骤来重现问题。在 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 qt6 qt-resource
1个回答
0
投票

这是因为所有资源都必须从 Qt 资源文件 (.qrc) 加载。创建一个qrc文件,添加前缀(我们称之为

rsc
),添加相应的.ui文件。然后像这样加载它:

QFile file(":/rsc/newform.ui"); //adding the prefix
© www.soinside.com 2019 - 2024. All rights reserved.