我在 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)
我怎么有这个问题?
检查您是否在 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)
| 归档时间: |
|
| 查看次数: |
1002 次 |
| 最近记录: |