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

它运行,并返回一个对象,但它从不显示在屏幕上。我已经将它作为我页面 QML 中的一个容器的父级。没有错误被抛出。我想知道这在 Cascades 中是否不起作用。

它记录在 BB10 Cascades 文档中:https ://developer.blackberry.com/cascades/reference/qml-qt.html#createQmlObject-method

4

3 回答 3

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()内部执行Row不会导致重新计算元素的一些基本估计Row
我将此报告为https://bugreports.qt-project.org/browse/QTBUG-40356中的错误

于 2014-07-22T08:38:07.763 回答
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 可见。

于 2013-06-14T18:47:31.110 回答
0

在我看来,问题在于没有给出大小和/或位置。尝试这个:

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

还尝试将父级锚定到窗口大小(根元素 - 如果还没有)。

另一个可能出现的问题是字体颜色与背景匹配,所以也要检查一下。

于 2013-01-14T23:52:56.890 回答