我正在尝试在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
请告诉我是否有更好的方法来管理变量。我希望它们具有全局性,以便可以在多个框架中使用。谢谢
答案 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中,您将找到一个示例。