如何访问在单独的QML文件中定义的变量?

How to access variables that are defined in a separate QML file?

提问人:skrovno_CZ 提问时间:11/16/2023 最后编辑:Abderrahmene Rayene Mihoubskrovno_CZ 更新时间:11/16/2023 访问量:45

问:

我无法访问单独文件中的变量。

下面是我的部分代码:

// Style.qml

import QtQuick

QtObject {
    property int mainWindowWidth: 1024
    property int mainWindowHeight: 768
}

// Main.qml

import QtQuick
import QtQuick.Window

Window {
    id: root
    width: Style.mainWindowWidth
    height: Style.mainWindowHeight
    minimumWidth: width
    minimumHeight: height
    maximumWidth: width
    maximumHeight: height
    visible: true
    title: "Sampletext"
}

它编译良好,但是当我运行它时,我收到一个错误,说:

无法将 [undefined] 分配给线宽 Style.mainWindowWidth 所在的 int。

如何解决此问题?

C++ qml qt-快速

评论

1赞 folibis 11/16/2023
您必须将 Style 对象声明为单例才能以这种方式使用它。阅读这篇文章,看看它接近你的需求。除此之外,我建议阅读一些QML书籍,例如这本以获取更多信息。
0赞 Stephen Quan 11/17/2023
我同意folibis。Singleton 是执行此操作的好方法,否则您必须先实例化组件,然后才能访问属性。答案中已经有一个单例。您是使用 还是 ?Style { id: style }cmakecmakeqmake

答:

0赞 Mohsen Kondori 11/16/2023 #1

应创建组件的实例或定义为单一实例组件。 单例的定义如下:StyleStyleStyle

样式.qml
pragma Singleton

import QtQuick

QtObject {
    property int mainWindowWidth: 1024
    property int mainWindowHeight: 768
}
CMakeLists.txt:
set_source_files_properties(
    Style.qml
    PROPERTIES QT_QML_SINGLETON_TYPE True
)

qt6_add_qml_module(appExample
    URI appExample
    VERSION 1.0
    QML_FILES
        Main.qml
        Style.qml
)
主.qml
import QtQuick
import QtQuick.Window

import appExample

Window {
    id: root
    width: Style.mainWindowWidth
    height: Style.mainWindowHeight
    minimumWidth: width
    minimumHeight: height
    maximumWidth: width
    maximumHeight: height
    visible: true
    title: "Sample Text"
}