Qt :: createQmlObject(字符串qml,对象父对象,字符串文件路径)是否在BB10 Cascades中有效?

时间:2013-01-09 11:20:50

标签: qt qml blackberry-10 blackberry-cascades

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

3 个答案:

答案 0 :(得分: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 :(得分: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

中将此报告为错误

答案 2 :(得分:0)

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

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

也可以尝试使用父级来锚定窗口大小(根元素 - 如果还没有)。

可能出现的另一个问题是字体颜色与背景匹配,因此请检查它。