QML 从同级文件夹导入项目
QML import item from sibling folder
假设我的 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
}
一段时间以来,我一直尝试使用 import "../"
从 Test.qml
导入 Style.qml
,但我一直收到 ReferenceError: Style is not defined
我知道 import 语句是造成这种情况的原因,我尝试了 "might" 工作的几种不同变体,但文档中缺少这方面的内容,我被卡住了。帮助表示赞赏。
使用下面的代码,我没有错误,并且看到了预期的视觉结果。如果您无法从这个工作示例中发现问题,我建议包括一个更完整的示例。请注意,我在这里给出的所有路径都是相对于 "root" 项目目录(例如 main.cpp 是 "root" 中的一个文件,components/Test.qml 位于 "components" 子目录):
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 {
}
components/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>
假设我的 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
}
一段时间以来,我一直尝试使用 import "../"
从 Test.qml
导入 Style.qml
,但我一直收到 ReferenceError: Style is not defined
我知道 import 语句是造成这种情况的原因,我尝试了 "might" 工作的几种不同变体,但文档中缺少这方面的内容,我被卡住了。帮助表示赞赏。
使用下面的代码,我没有错误,并且看到了预期的视觉结果。如果您无法从这个工作示例中发现问题,我建议包括一个更完整的示例。请注意,我在这里给出的所有路径都是相对于 "root" 项目目录(例如 main.cpp 是 "root" 中的一个文件,components/Test.qml 位于 "components" 子目录):
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 {
}
components/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>