在我的QT应用程序中,我想将所有UI字符串移动到中央文件,如下所示:
SharedStrings.qml:
import QtQuick 2.0
pragma Singleton
QtObject {
readonly property string buttonOKString: "OK"
readonly property string buttonCancelString: "CANCEL"
}
Example.qml:
text: SharedStrings.buttonOKString
唯一的问题是,据我所知,这会创建一个属性绑定,只要SharedStrings.qml中的值发生更改,就会更新Example.qml的文本。但是,这是不必要的,因为这些值不会改变。这是一个嵌入式应用程序,因此我可以保存的任何内存/处理都是有益的。
有没有办法可以在单个文件中定义字符串并在其他qml文件中使用,而不使用属性绑定?
答案 0 :(得分:3)
不是绑定,而是使用赋值:
Component.onCompleted: text = SharedStrings.buttonOKString
分配也会破坏任何现有的绑定。
答案 1 :(得分:1)
我在这里看到其他三种方法:
Q_PROPERTY
个CONSTANT
的C ++类。虽然这可能是最快的,但它也是编写代码最多的代码,因为每个常量需要一个getter函数。因此我不推荐它。QQmlContext::setContextProperty("myVar", myVarValue);
。缺点是那些是全局变量,所以我再也不推荐它。 答案 2 :(得分:1)
在QML的JavaScript引擎的当前实现中,属性绑定仅在事情发生变化时产生开销。