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

daz*_*zzo 3 qt qml

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

我在我的 src.pro 中添加

QT += qml quickcontrols2 charts
Run Code Online (Sandbox Code Playgroud)

我的应用程序是这样的

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 }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎么有这个问题?

Tar*_*rod 5

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

下面的例子工作正常,但如果我们使用QGuiApplicationin会崩溃main()

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

更多信息在这里

主程序

#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();
}
Run Code Online (Sandbox Code Playgroud)

主文件

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 }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)