假设我的qml.qrc
<RCC>
<qresource prefix="/">
<file>main.qml</file>
<file>Style.qml</file>
</qresource>
<qresource prefix="/components">
<file>Test.qml</file>
</qresource>
main.qml
import QtQuick 2.5
import QtQuick.Window 2.2
import QtQuick.Layouts 1.0
import QtQuick.Controls 2.0
import "components"
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
Test {
color: "red"
}
}
Test.qml
import QtQuick 2.0
import ".."
Rectangle {
width: Style.test * 200
height: 200
}
Style.qml
import QtQuick 2.0
pragma Singleton
QtObject {
property real test: 1.0
}
我有一段时间试图从Style.qml
Test.qml
导入import "../"
,但我一直在ReferenceError: Style is not defined
我知道import语句是导致这种情况的原因,我已经尝试了一些“可能”工作的不同变体,但文档缺乏这个并且我被卡住了。帮助赞赏。
答案 0 :(得分:3)
使用以下代码,我没有错误,并看到预期的可视结果。如果您无法从这个工作样本中发现您的问题,我建议您提供一个更完整的示例。请注意,我在这里给出的所有路径都是相对于&#34; root&#34;项目目录(例如,main.cpp是&#34; root&#34;中的文件,components / Test.qml位于&#34;组件&#34;子目录中):
main.cpp中:
#include <QQmlApplicationEngine>
#include <QGuiApplication>
int main(int argc, char **argv) {
QGuiApplication app(argc, argv);
QQmlApplicationEngine qAppEngine(QUrl("qrc:/main.qml"));
return app.exec();
}
main.qml
import "components"
Test {
}
部件/ Test.qml:
import ".."
Style {
}
Style.qml:
import QtQuick 2.6
import QtQuick.Window 2.2
Window {
visible: true
width: 500
height: 500
color: "red"
}
使用以下内容构建:
test.pro:
QT += quick qml
RESOURCES += test.qrc
SOURCES += main.cpp
test.qrc:
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>main.qml</file>
<file>Style.qml</file>
<file>components/Test.qml</file>
</qresource>
</RCC>