QML ChartView 崩溃

QtCreator 新建 Qt Quick Application - Empty ,默认的 Qt Quick 工程中使用的是QGuiApplication

复制代码
#include <QGuiApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

    QGuiApplication app(argc, argv);


    QQmlApplicationEngine engine;

    const QUrl url(QStringLiteral("qrc:/main.qml"));
    QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
                     &app, [url](QObject *obj, const QUrl &objUrl) {
        if (!obj && url == objUrl)
            QCoreApplication::exit(-1);
    }, Qt::QueuedConnection);
    engine.load(url);

    return app.exec();
}

qml中使用ChartView后,程序会启动不起来,莫名其妙崩溃,并且不会报告什么原因。

pro 工程文件中加入 QT += charts qml quick 也还是崩溃。

需要将QGuiApplication替换成QApplication。 原因可能是ChartView使用了QWidget的一些实现。而QGuiApplication中并不至此QWidget。他们的区别大致如下。

QGuiApplication和QApplication的区别

QGuiApplicationQApplication是Qt框架中用于管理应用程序的两个类,它们在功能和应用场景上有所不同。

继承关系

QApplication是QGuiApplication的子类,而QGuiApplication又是QCoreApplication的子类。这意味着QApplication继承了QGuiApplication和QCoreApplication的所有功能。

功能和应用场景

  • QCoreApplication:用于没有图形界面的应用程序,提供了一个非GUI的事件循环。

  • QGuiApplication:用于有图形界面的应用程序,但不使用QWidget,只使用QML实现。它提供了额外的GUI相关设置,比如桌面设置、风格、字体、调色板、剪切板和光标等。

  • QApplication:用于使用QWidget的应用程序,或者QML与QWidget混合使用的应用程序。它包含了QGuiApplication的所有功能,并增加了与QWidget相关的功能,比如设置双击间隔、按键间隔、拖拽距离和时间、滚轮滚动行数等。

选择使用

  • 如果你的应用程序是无界面的,直接使用QCoreApplication

  • 如果你的应用程序有图形界面,但不使用QWidget,只使用QML,使用QGuiApplication

  • 如果你的应用程序使用QWidget,或者QML与QWidget混合使用,使用QApplication

相关推荐
程与留1 小时前
06_Qt 常用数据类型与容器:QString、QList、QVector、QMap 的性能与实现分析
数据结构·qt
zlinear数据采集卡7 小时前
数据采集卡从入门到精通(38):上位机开发实战——Python/QT/LabVIEW的技术选型与分层架构
python·单片机·嵌入式硬件·qt·fpga开发·开源·labview
skr爱码士8 小时前
05_Qt 核心模块概览——Qt Core、Gui、Widgets、Quick 的职责划分
c++·qt·系统架构·客户端
MOONICK9 小时前
QT的UI开发框架
qt·ui
郝学胜-神的一滴9 小时前
Horse3D 游戏引擎研发笔记(七):Clydesdale——从流式日志到多输出订阅
c++·qt·unity·游戏引擎·图形渲染·unreal engine·opengl
NO121213 小时前
python pyqt5調用攝像頭實時顯示
开发语言·python·qt
丰锋ff1 天前
基于 Qt 的智慧社区物业管理系统
开发语言·qt
程与留1 天前
05_Qt 核心模块概览——Qt Core、Gui、Widgets、Quick 的职责划分
c++·qt
buhuizhiyuci1 天前
【QT-百日筑基篇】修真世界摸爬滚打多年,终于黄天不负有心人,突破炼器中期——常用控件QWight的属性
开发语言·c++·qt·gui·图形化
Littlehero_1211 天前
QT自定义控件之热换站系统(源码开源)
开发语言·qt