首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >退出时qt应用程序崩溃

退出时qt应用程序崩溃
EN

Stack Overflow用户
提问于 2018-11-24 13:09:19
回答 1查看 531关注 0票数 1

我在ubuntu18.04中使用了qt5.5,我需要显示3d模型( obj格式),我使用qquickwidget和qml(Scene3D),它对显示模型很好,但是当应用程序退出时,它会崩溃。我从qtcreator控制台获得的错误消息如下:

代码语言:javascript
复制
QMutex::lock()                                         0x7ffff53b0725 
QSemaphore::acquire(int)                               0x7ffff53b23f4 
Qt3D::QAspectManager::quit()                           0x7fffc77c03bd 
Qt3D::QAspectEngine::shutdown()                        0x7fffc77be54a 
Qt3D::QAspectEngine::~QAspectEngine()                  0x7fffc77be94e 
Qt3D::QAspectEngine::~QAspectEngine()                  0x7fffc77be9d9 
??                                                     0x7fffc8036c27 
QMetaObject::activate(QObject *, int, int, void * *)   0x7ffff55d3cfa 
QObject::destroyed(QObject *)                          0x7ffff55d4a6f 
QObject::~QObject()                                    0x7ffff55dcdab 
QQuickWindow::~QQuickWindow()                          0x7ffff3d43931 
QQuickWindow::~QQuickWindow()                          0x7ffff3d43999 
??                                                     0x7ffff76bbb8a 
??                                                     0x7ffff76bbc99 
QObject::~QObject()                                    0x7ffff55dcb6b 
QWidget::~QWidget()                                    0x7ffff6fc600b 
QQuickWidget::~QQuickWidget()                          0x7ffff76bb119 
QObjectPrivate::deleteChildren()                       0x7ffff55d2bdc 
QWidget::~QWidget()                                    0x7ffff6fc5f8b

这似乎是因为QQuickWindow析构函数被调用了两次。我试着删除qml中的3d相关核心,只绘制一个简单的2d矩形,它不会崩溃,有人帮我解决这个问题吗,非常感谢。贝娄是我的qml文件;(1) main.qml

代码语言:javascript
复制
import QtQuick 2.0
import QtQuick.Scene3D 2.0
import QtQuick.Controls 1.4
import QtQuick.Layouts 1.2
import Qt3D 2.0

Item {
  id: main

 Camera {
    id: camera
}

Entity {
    components: [
        ShadowMapFrameGraph {
            id: framegraph
            viewCamera: camera
            lightCamera: light.lightCamera
        }
    ]
}

Light {
    id: light
}

AdsEffect {
    id: shadowMapEffect

    shadowTexture: framegraph.shadowTexture
    light: light
}


Scene3D {
    id: scene3D
    anchors.fill: parent
    anchors.verticalCenter: parent.verticalCenter
    focus: true
    aspects: "input"

    obj_model{
        id: model
    }
}
}

(2) obj_model.qml

代码语言:javascript
复制
import Qt3D 2.0
import Qt3D.Renderer 2.0
import QtQuick 2.1 as QQ2

Entity {
id: root
property Material material
Camera {
    id: camera
    projectionType: CameraLens.PerspectiveProjection
    fieldOfView: 40
    aspectRatio: 4/3
    nearPlane : 0.1
    farPlane : 3000.0
    position: Qt.vector3d( 0.0, -1000, 300.0 )
    upVector: Qt.vector3d( 0.0, 0.0, 1.0 )
    viewCenter: Qt.vector3d( 0.0, 0.0, 300.0 )
}

Configuration  {
    controlledCamera: camera
}


components: [
    FrameGraph {
        activeFrameGraph: ForwardRenderer {
            camera: camera
            clearColor: "white"
        }
    }
]

PhongMaterial {
    id: material
    ambient: Qt.rgba( 0.8, 0.8, 0.8, 1.0 )
    diffuse: Qt.rgba( 0.1, 0.1, 0.1, 0.5 )
    shininess: 50 //shining.value
}

Transform {
    id: logoTransform
}

Mesh {
    id: logoMesh
    source: "../res/model.obj"
}

Entity {
    id: logoEntity
    components: [ logoMesh, material, logoTransform ]
}

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-03 02:07:54

这是qt5.5的一个bug,需要更新qt版本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53458471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档