在.qml文件中声明字符串

时间:2018-11-13 20:19:50

标签: qt qml qt5

我正在尝试在qml中创建一个可变文件,该文件声明了几个其他qml文件要使用的字符串。例如:这将是Variables.qml

import QtQuick 2.0

Item {
    property var mystring: qsTr("hello world")
}

,我想在另一个文件tab1.ui.qml中引用它

import QtQuick 2.4
import QtQuick.Controls 1.4
import QtQuick.Layouts 1.3
import "."

Item {
    Rectangle {
        id: rectangle
        color: "#3e1edd"
        anchors.fill: parent
        Text {
                id: text6
                anchors.fill: parent
                font.pixelSize: 12
                text: Variables.mystring
                visible: true
        }
    }
 }

这将导致错误:无法将[undefined]分配给QString

请告诉我是否有更好的方法来管理变量。我希望它们具有全局性,以便可以在多个框架中使用。谢谢

1 个答案:

答案 0 :(得分:4)

您必须使用一个单例,为此,您必须创建一个文件夹,其中包含.qml,其顶部带有“ pragma Singleton”,并带有一个指示文件的qmldir:

Global
 ├── qmldir
 └── Variables.qml

qmldir

singleton Variables 1.0 Variables.qml

Variables.qml

pragma Singleton
import QtQuick 2.0

QtObject {
    property var mystring1: qsTr("hello world1")
    property var mystring2: qsTr("hello world2")
}

然后,您必须以以下方式导入和使用它:

// others imports
import "Global"

// ...

    Text{
        // ...
        text: Variables.mystring1
    }

在此link中,您将找到一个示例。