@TOC
A.问题描述:
1.在Qt creator中新建Quick项目,使用ChartView会导致程序崩溃?无法运行?[转Step 1]
2.如何在Qt Quick工程中使用ChartView?[转Step 1]
3.如何在Qt Quick工程中使用QtCharts绘图? [转Step 0]
B.问题本质:
Qt Quick - Qt模块的特定应用场景
- 相关类的继承关系:
QApplication <- QGuiApplication <- QCoreApplication <- QObject(根父类)
QChartView <- QGraphicsView <- QAbstractScrollArea <- QFrame <- QWidget <- (QObject and QPaintDevice) - 相关类的功能描述:
-- QCoreApplication 定义在core模块中,为应用程序提供了一个非gui的事件循环;
-- QGuiApplication 定义在gui模块中,提供了额外的gui相关的设置,比如桌面设置,风格,字体,调色板,剪切板,光标;
-- QApplication 定义在widgets模块中,是QWidget相关的,能设置双击间隔,按键间隔,拖拽距离和时间,滚轮滚动行数等,能获取桌面,激活的窗口,模式控件,弹跳控件等。 - - 相关类的应用场景:
-- QCoreApplication 适用于 无界面的应用程序;
-- QGuiApplication 适用于 含有gui相关(但没有使用widgets模块)的应用程序;
-- QApplication 适用于 含有gui相关 且 使用widgets相关(比如QChartview) 的应用程序;
其中 QCoreApplication 最轻量; QApplication 包含的功能最多,也就最笨重;QGuiApplication 介于两者之间。到 Qt5.8 开始,支持用到什么模块,加载什么模块,尽量使得编译后的 程序轻量化。
C.问题解决:
演示版本(其他 操作系统 可以参考一下):
- Windows10
- Qtcreater 4.11.1 / Qt 5.14.1
解决步骤 :
Step 0 问题展示
0.1 创建 Qt Quick 应用程序
0.2 打开 main.qml
0.3 插入代码片段,运行即可发现出现提示信息 The program has unexpectedly finished.
import QtCharts 2.3
.
.
.
ChartView {
title: "this is title"
}
0.4 附录:记得在Pro文件加入 charts模块
Step 1 查看 main.cpp 是否包含头文件 QApplication ▼
若未包含,将头文件包含一下即可,如下图所示:
改动内容:
1.在 main.cpp 包含 #include <QApplication>
2.将 QGuiApplication app(argc, argv); 修改为 QApplication app(argc, argv);
参考 :
0.Qml-and-qt-quick>
1.QML入门----设计器详解
2.Qt-multimedia-in-qt-6
3.Qt Blog
4.chartview-crash-when-launching-on-mobile-qt-qml-error
5.踏雪Alfred Qt blog
可以肯定的是学海无涯,这篇文章也会随着对 Qt 的深入学习而持续更新, 欢迎各位在评论区留言进行探讨交流。