qt - 在其他其他QML文件的QML中声明全局属性

标签 qt variables scope qml global-variables

我想在配置文件中声明一个全局属性,并在其他文件中使用它。例如,在以下位置声明mainbg:

Style.qml :

property color mainbg: 'red'

并在其他QML文件(例如view.qmlmain.qml)中使用它。我该怎么做?

最佳答案

使用QML单例。

请引用this page上的“方法2”
-丑陋的QTBUG-34418注释属于我。

这些是您需要的:

Style.qml

pragma Singleton
import QtQuick 2.0
QtObject {
    property color mainbg: 'red'
}

qmldir

该文件必须与单例.qml文件(在我们的示例中为Style.qml)位于同一文件夹中,或者您必须提供相对路径。 .qrc资源文件中可能还需要包含qmldir。有关qmldir文件的更多信息,请参见here
# qmldir
singleton Style Style.qml

如何引用
import QtQuick 2.0
import "."  // this is needed when referencing singleton object from same folder
Rectangle {
    color: Style.mainbg  // <- there it is!!!
    width: 240; height 160
}

此方法自Qt5.0起可用。即使引用同一文件夹中的QML单例,也需要一个文件夹import语句。如果是同一文件夹,请使用:import "."这是我在qt-project页面上记录的错误(请参阅QTBUG-34418,单例需要显式导入才能加载qmldir文件)。

关于qt - 在其他其他QML文件的QML中声明全局属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15257946/

相关文章:

javascript - ES6 block 范围变量定义作为条件

json - Angularjs 在 ng-repeat 中将字符串转换为对象

java - 静态变量和 block 之间的执行顺序是如何执行的?

angularjs - 根据 $scope 值在 View 中加载 Angular 指令

qt - 是否有完整的* .pro文件语法页面?

c++ - Qts 古老的 QCoreApplicationPrivate::sendPostedEvents 异常吃

c++ - Qt 5.3 QPlainTextEdit 改变QTextCursor颜色

c++ - 无法从 qml 调用 C++ 方法 : "Property of object is not a function"

关于类和更改变量的 Ruby 测试让我卡住了。 (我假设很简单)

python - 在 python 中将文本添加到循环