如何从 C++ 代码将 QML 对象转换为 QQuickWindow?
How to cast a QML object as QQuickWindow from c++ code?
我正在使用 QQmlVTKPlugin
,它允许我使用 QML 直接访问 VTKRenderWindow
和 VTKRenderItem
。要设置它,我需要给我的 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 中设置可见参数。
我正在使用 QQmlVTKPlugin
,它允许我使用 QML 直接访问 VTKRenderWindow
和 VTKRenderItem
。要设置它,我需要给我的 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 中设置可见参数。