关于 Qt6.2 使用 QQuickWindow 运行时崩溃的解决方法

项目场景:

最近将项目从Qt5.15转移到Qt6,过程中发现问题。


问题描述

Qt6.2 使用 QQuickWindow 运行时崩溃。
使用的地方:

QQuickWidget *widget = new QQuickWidget();
ads::CDockWidget *dockWidget = new ads::CDockWidget("Quick");
dockWidget->setWidget(widget);
return dockWidget;

运行崩溃,报警告:

Warning: QQuickWidget is only supported on OpenGL. Use QQuickWindow::setGraphicsApi() to override the default. ((null):0, (null))

原因分析:

缺少设置使用OpenGLApi。


解决方案:

在实例化QQuickWidget 之前,添加一行代码。

	ads::CDockWidget *createQQuickWidget()
	{
        //添加使用 OpenGL Api
        QQuickWindow::setGraphicsApi(QSGRendererInterface::OpenGL);
		QQuickWidget *widget = new QQuickWidget();
		ads::CDockWidget *dockWidget = new ads::CDockWidget("Quick");
        dockWidget->setWidget(widget);
		return dockWidget;
	}

解决。参考:
https://forum.qt.io/topic/130881/potential-qquickwidget-broken-on-qt6-2

你可能感兴趣的:(qt,c++)