微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – Qt“程序意外结束了.”关闭

我有关于QML 2(Qt 5.2.1)的项目.看起来效果很好.

但是当我在Qt Creator的“应用程序输出”(底部的那个)中关闭运行项目(ALT F4或其他)时,在1-2秒后,我收到以下消息:

The program has unexpectedly finished.
bla-bla-bla.exe crashed

这在发布和调试模式下发生.我在调试下启动,但没有任何错误.我从最后一个析构函数一步一步地跟着返回app.exec();,返回1.

我的意思是除了这个 – 我没有看到任何错误.我应该担心吗?我能知道这条消息的原因吗?有没有办法获得更具体的信息?

我尝试从cmd启动应用程序,但没有得到任何错误.我的main.cpp:

#include <QtGui/QGuiApplication>
#include "qtquick2applicationviewer.h"
#include "painter.h"

int main(int argc,char *argv[])
{
    QGuiApplication app(argc,argv);

    qmlRegisterType<Painter>("MyCanvas",1,"MyCanvas");

    QtQuick2ApplicationViewer viewer;
    viewer.setMainQmlFile(QStringLiteral("qml/test_painteditem/main.qml"));
    viewer.showExpanded();    

    return app.exec();
}

Main.qml:

import QtQuick 2.0
import MyCanvas 1.0

Rectangle {
    width: 360
    height: 360
    color: "white";
     focus: true;
    Keys.onLeftpressed: {
            mc.frame--;
            mc.update();
    }
    Keys.onRightpressed: {
            mc.frame++;
            mc.update();
    }
    Keys.onpressed: {
        if (event.key === Qt.Key_C){
             mc.switchCurve();
        }else if (event.key === Qt.Key_O){
            mc.switchCurveOffset();
       }    
   }

   MouseArea {
        anchors.fill: parent
        onClicked: {
            // mc.x += 10;
            //mc.update();
            if (!tim.running){
                tim.start();
            } else {
                tim.stop();
            }
        }
        onWheel: {
                if (wheel.angleDelta.y > 0)
                    mc.zoomIn();
                else
                    mc.zoomOut();
        }
        onpressed: {    
        }
    }

    Timer {
        id:tim
        interval: 1; running: false; repeat: true
        onTriggered:  {    
            mc.frame++;
            mc.update();
        }
    }    

    MyCanvas {
        id:mc;
        x:0;
        y:0;
        width:1000;         /** 2000x2000 not supported in Android  */
        height:1000;
    }
}

解决方法

退出Qt应用程序时,可以调用或连接到 app.quit()方法.除此之外,返回值1可能不是Qt创建者所期望的.您希望返回值等于EXIT_SUCCESS(或0).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐