2011-09-22 201 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來完成