2011-09-22 160 views
18

我想要做的事similer到下面的代码:我们可以在QML文件中声明全局变量吗?

//test.qml 
import QtQuick 1.0 
Item 
{ 
    var globalforJs =10; 

    function increment() // JavaScript function 
    { 
     globalforJs++; 
    } 
    .... 
QML Code 

我们能有全局变量QML file和JavaScript函数访问它?

回答

24

尝试property int globalForJs: 10;

如果你想要一个变量,可以采取任何类型:

property var globalForJs: 10

此前QML 2,而不是使用varvariant关键字。

+0

感谢您的回复,可以从QML文件本身的Java脚本函数中访问这个'property variant globalForJs:10'吗? – psp1

+0

是的,它可以。 QML对象的所有属性都可以通过其中定义的任何JavaScript函数来访问。 – coyotte508

+0

但如何使这个属性'私人',所以它不被其他QML的东西看到? – KernelPanic

7

使用intvariant属性不会创建一个JavaScript变量,而是一个语义不同一般的QML特性(see here

的Qt 5之前,被推荐的全局JavaScript变量在一个单独导入的JavaScript文件中定义,但Qt 5增加了一个var类型property support

-3

要做出全球性的东西应该像这个例子

property variant name:"john"//i want this to be global 
onCreationCompleted(){ 
Qt.name = name 
} 

等。无论您希望使用的名称属性使用像Qt.name,而不是仅仅name.this也适用于控件

任何IDS来完成
相关问题