如何从C ++扩展QQuickItem创建QQuickWindow作为子级?

时间:2018-08-21 17:00:36

标签: c++ qt qml qtquick2

此问题是由以下QML引起的:

timeout

在此示例中,在项目内部有一个应用程序窗口,然后是第二个窗口。我正在尝试复制这种用法,但是是通过在扩展的^C内实例化一个ApplicationWindow { Rectangle { Text { text: "Hello World" } } Item { // I do something Window { Text { text: "Hello world too!" } } } } 来实现的,但是根据文档,我无法QQuickWindow的类型不是{{1 }}。我想要的是这样:

QQuickItem

再次不幸的是,由于QQuickItem没有扩展QWindow,因此在class Foo : public QQuickItem { private: QQuickWindow * childWindow; public: Foo(QQuickItem * parent = 0) : QQuickItem(parent) { childWindow = new QQuickWindow(); childWindow->setParent(this); // Add custom items to childWindow } } 失败了。我怎么能以类似的方式做到这一点?

1 个答案:

答案 0 :(得分:2)

Window不是该项的子项,也不是易于使用以下代码查看的任何元素的子项:

ApplicationWindow {
    width: 100
    height: 100
    visible: true
    Rectangle {
        Text { text: "Hello World" }
    }

    Item{
        id: item
        Window{
            id: new_window
            visible: true
            color: "red"
            Component.onCompleted: console.log("new_window :",new_window.parent)
        }
        Component.onCompleted: console.log("item :", item.parent)
    }
}

输出:

qml: item : ContentItem_QMLTYPE_10(0x56353791dbe0)
qml: new_window : undefined

很明显,可以看到ItemcontentItem的子代,另一方面Window没有父代。