此问题是由以下QML激发的:
ApplicationWindow {
Rectangle {
Text { text: "Hello World" }
}
Item {
// I do something
Window {
Text { text: "Hello world too!" }
}
}
}
在此示例中,在项目内部有一个应用程序窗口,然后是第二个窗口。我正在尝试复制这种用法,但是是通过在扩展的
QQuickWindow
内部实例化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
}
}
不幸的是,由于
childWindow->setParent(this)
不会扩展QQuickItem
,因此在QWindow
上失败了。我怎么能以类似的方式做到这一点? 最佳答案
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
显然,可以看到
Item
是contentItem
的子代,而另一方面Window
没有父代。关于c++ - 如何从C++扩展QQuickItem创建QQuickWindow作为子级?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51953510/