В настоящее время я пытаюсь импортировать сцену в моем приложении Qt3D.Проблема заключается в том, что при создании экземпляра из QSceneLoader и установке исходного кода QUrl, а затем добавлении его в сущность приложение замораживает приложение до завершения импорта.
Я пытался поместить его в поток, например:
void start()
{
qDebug() << "Thread";
QAspectEngine* pAs = new QAspectEngine();
pAs->registerAspect(new QRenderAspect());
QRenderSettings *renderSettings = new QRenderSettings();
renderSettings->setActiveFrameGraph(new Qt3DExtras::QForwardRenderer());
// Root entity
Qt3DCore::QEntity *sceneRoot2 = new Qt3DCore::QEntity();
sceneRoot2->addComponent(renderSettings);
pAs->setRootEntity(QSharedPointer<QEntity>(sceneRoot2));
Qt3DRender::QSceneLoader *sceneLoader = new Qt3DRender::QSceneLoader();
SceneWalker sceneWalker(sceneLoader);
QObject::connect(sceneLoader, &Qt3DRender::QSceneLoader::statusChanged, &sceneWalker, &SceneWalker::onStatusChanged);
sceneLoader->setSource(QUrl::fromLocalFile("C:/Users/USER/Downloads/TreeTest.obj"));
sceneRoot2->addComponent(sceneLoader);
}
Эта функция будет запускаться, когда QThread издает сигнал запуска, но потом я получил это: QObject::setParent: Cannot set parent, new parent is in a different thread.
Так что я не знаю, как импортировать сцену в Qt3D без зависания приложения,может ли кто-нибудь помочь?