【问题标题】:The program has unexpectedly finished - app crashed程序意外完成 - 应用程序崩溃
【发布时间】:2017-05-11 15:15:32
【问题描述】:

我对 QML 建模中的 Qt 图表有疑问。我有一个简单的应用程序,它实现了一个非常简单的 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 }
        }
    }
}

我怎么会遇到这个问题?

【问题讨论】:

  • 堆栈跟踪在哪里?
  • 检查doc

标签: qt qml


【解决方案1】:

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

下面的例子可以正常工作,但是如果我们在main() 中使用QGuiApplication 会崩溃:

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

更多信息here

ma​​in.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();
}

ma​​in.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 }
        }
    }
}

【讨论】:

  • 为什么会崩溃?qt有多傻?qt有这么多缺点
  • @mohsen 根据 Qt 的说法,由于 Qt Charts 使用 Qt Graphics View Framework 进行绘图,所以必须使用 QApplication。
猜你喜欢
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 2018-04-25
  • 2015-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多