如何从 C++ 代码将 QML 对象转换为 QQuickWindow?

How to cast a QML object as QQuickWindow from c++ code?

我正在使用 QQmlVTKPlugin,它允许我使用 QML 直接访问 VTKRenderWindowVTKRenderItem。要设置它,我需要给我的 QQMLApplicationEngine 一个 QQuickWindow 和一个 QQuickItem。如果我只是从 main.cpp 进行初始化,一切正常,但出于某种原因,我需要通过使用单例在我的 QML 文件中调用 class 构造函数来做到这一点。我从 QML 调用了以下构造函数,但是当我这样做时 window->show() 我的应用程序崩溃了

SceneManage::SceneManage(QObject *topLevel)
{
    window = qobject_cast<QQuickWindow *>(topLevel);   // QQuickWindow window
    window->show();
    QQuickItem *item = topLevel->findChild<QQuickItem *>("3DViewer");
...

有人有办法做我想做的事吗?

解决方案:不要决定显示来自 c++ 的 window,而只在 QML 中设置可见参数。