2013-01-09 28 views
2
var newObject = Qt.createQmlObject('import bb.cascades 1.0; Label {text: "Hold on cowboy!" }', parentContainer, "dynamicSnippet1"); 

它運行,並返回一個對象,但它永遠不會顯示在屏幕上。我已經將它寄給了我的頁面QML中的一個容器。沒有錯誤被拋出。我想知道這在Cascades中是否不起作用。Qt :: createQmlObject(字符串qml,對象父,字符串文件路徑)在BB10級聯中工作嗎?

在此記錄的BB10瀑布文檔中:https://developer.blackberry.com/cascades/reference/qml-qt.html#createQmlObject-method

+0

我也是。我使用Qt 5.3.0,它不像預期的那樣工作。如果你可以在'.qml'文件中定義它,你可以創建組件。有關更多信息,請參閱文檔中的'Qt.createComponent()'。 –

回答

0

看起來,我認爲問題出在尺寸和/或位置沒有給出。 試試這個:

var newObject = Qt.createQmlObject('import bb.cascades 1.0; Label {text: "Hold on cowboy!"; anchors.fill: parent }', parentContainer, "dynamicSnippet1"); 

也可以嘗試父錨定到窗口大小(根元素 - 如果沒有的話)。

另一個可能發生的問題是字體顏色與背景相匹配,因此請檢查。

1

1)請檢查newObject是否被創建。

下面是示例代碼:

var newObject = Qt.createQmlObject('import bb.cascades 1.0; 
    Label {text: "Hold on cowboy!" }', parentContainer, "dynamicSnippet1"); 

if(newObject == null) { 
    console.log("error creating object" + newObject.errorString()); 
} 

2)請確保parentContainer是可見的。

1

好的,我發現我的情況有問題。
我以前Qt.createQmlObject()如下:

import QtQuick 2.2; 

Rectangle { 
    id: root 
    width: 300; height: 300 

    Row { 
     id: itemContainer 
     Component.onCompleted: { 
      var newObject = Qt.createQmlObject('import QtQuick 2.2; Rectangle {color: "red"; width: 200; height: 200}', itemContainer, ""); 
     } 

     Rectangle { 
      width: 100; height: 50 
      color: "Yellow" 
     } 
    } 
} 

這不是工作,我改變了它如下:

import QtQuick 2.2; 

Rectangle { 
    id: root 
    width: 300; height: 300 

    Row { 
     id: itemContainer 

     Rectangle { 
      width: 100; height: 50 
      color: "Yellow" 
     } 

     Component.onCompleted: { 
      var newObject = Qt.createQmlObject('import QtQuick 2.2; Rectangle {color: "red"; width: 200; height: 200}', itemContainer, ""); 
     } 
    } 
} 

和它的作品,但並不如預期!如您所見,在元素內執行Qt.createQmlObject()不會導致重新計算元素的一些基本估計值。
我把這個報告爲bug在https://bugreports.qt-project.org/browse/QTBUG-40356