我在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 }
}
}
}
我该如何解决这个问题?
答案 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 }
}
}
}