该程序意外完成 - 应用程序崩溃

时间:2017-05-11 15:15:32

标签: qt qml

我在QML建模中遇到Qt Charts问题。我有一个简单的应用程序,实现了一个非常简单的ChartView。当我运行应用程序时,它崩溃了,我在应用程序输出The program has unexpectedly finished中收到错误。

我在src.pro

中添加了
QT += qml quickcontrols2 charts

我的申请就是这个

import QtCharts 2.2

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    ChartView {
        anchors.fill: parent
        theme: ChartView.ChartThemeBrownSand
        antialiasing: true

        PieSeries {
            id: pieSeries
            PieSlice { label: "eaten"; value: 94.9 }
            PieSlice { label: "not yet eaten"; value: 5.1 }
        }
    }
}

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

检查您的main.cpp中是否使用QGuiApplication而不是QApplication

以下示例正常运行,但如果我们在QGuiApplication中使用main()则会崩溃:

  

注意:自Qt Creator 3.0起,使用基于Qt Quick 2模板的Qt Quick Application向导创建的项目默认使用QGuiApplication。由于Qt Charts使用Qt Graphics View Framework进行绘图,因此必须使用QApplication。将QGuiApplication替换为QApplication后,使用向导创建的项目可用于Qt Charts。

更多信息here

<强>的main.cpp

#include <QApplication>
#include <QQuickView>

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

    QQuickView *view = new QQuickView;
    view->setSource(QUrl(QLatin1String("qrc:/main.qml")));
    view->show();

    return app.exec();
}

<强> main.qml

import QtQuick.Controls 2.0
import QtQml 2.2
import QtCharts 2.0

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    ChartView {
        anchors.fill: parent
        theme: ChartView.ChartThemeBrownSand
        antialiasing: true

        PieSeries {
            id: pieSeries
            PieSlice { label: "eaten"; value: 94.9 }
            PieSlice { label: "not yet eaten"; value: 5.1 }
        }
    }
}