来自兄弟文件夹的QML导入项

时间:2017-01-17 10:52:25

标签: qt qml qt-creator

假设我的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语句是导致这种情况的原因,我已经尝试了一些“可能”工作的不同变体,但文档缺乏这个并且我被卡住了。帮助赞赏。

1 个答案:

答案 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>