En esta página

Qt Graphs Migración desde Qt DataVisualization

La API y la funcionalidad entre Qt DataVisualization y Qt Graphs se han mantenido prácticamente sin cambios. Sin embargo, hay algunas diferencias que deben tenerse en cuenta al migrar su aplicación de Qt DataVisualization a Qt Graphs:

  • Declaración de importación QML
  • Inclusión del módulo CMake
  • Inclusión del módulo qmake
  • Creación de aplicaciones widget
  • Requisito de utilizar OpenGL backend
  • Clases eliminadas
  • API eliminadas
  • API modificadas

Declaración de importación QML

La declaración de importación en Qt DataVisualization:

import QtDataVisualization

se cambia a

import QtGraphs

para Qt Graphs.

Inclusión del módulo CMake

La inclusión en Qt DataVisualization:

find_package(Qt6 REQUIRED COMPONENTS DataVisualization)
target_link_libraries(mytarget PRIVATE Qt6::DataVisualization)

se cambia a:

find_package(Qt6 REQUIRED COMPONENTS Graphs)
target_link_libraries(mytarget PRIVATE Qt6::Graphs)

para Qt Graphs.

Inclusión del módulo Qmake

La inclusión en Qt DataVisualization:

QT += datavisualization

se cambia a:

QT += graphs

para Qt Graphs.

Creación de Aplicaciones Widget

Para crear un Graph en una aplicación widget, cambia el código de:

Q3DBars *barGraph = new Q3DBars();
QWidget *barsWidget = new QWidget();
QWidget *container = QWidget::createWindowContainer(barGraph, barsWidget);

auto *hLayout = new QHBoxLayout(barsWidget);
hLayout->addWidget(container, 1);

a:

QQuickWidget *quickWidget = new QQuickWidget();
Q3DBarsWidgetItem *barGraph = new Q3DBarsWidgetItem();
barGraph->setWidget(quickWidget);

auto *hLayout = new QHBoxLayout(quickWidget);

Requisito para usar OpenGL Backend

Para utilizar Qt Graphs 3D, ya no es necesario forzar el uso del backend OpenGL:

// Remove this line
qputenv("QSG_RHI_BACKEND", "opengl");

Qt Graphs utiliza Qt Quick 3D para el renderizado, y como tal soporta los backends de renderizado nativos de la plataforma en la que se está ejecutando.

Clases eliminadas

  • Q3DCámara
  • Q3DLight
  • Q3DObject
  • Q3DTheme

APIs eliminadas

  • hasContext
  • shadowsSupported
  • reflexión
  • reflectividad

API modificadas

  • optimizationHint
  • renderingMode
  • renderToImage
  • ColorGradient y ColorGradientStop
  • ThemeColor
  • API de datos
  • API de cámara
  • APIs de temas
  • Enums

optimizationHint

Legacy es ahora el modo que era OptimizationDefault en QtDataVisualization. Default usa instanciación, y debería usarse para todos los objetivos que lo soporten.

renderingMode

RenderDirectToBackground_NoClear ha sido eliminado, pues ya era obsoleto en QtDataVisualization en Qt 6.

renderToImage

renderToImage ahora devuelve QSharedPointer<QQuickItemGrabResult> en lugar de QImage, y ya no toma msaaSamples como parámetro.

ColorGradient y ColorGradientStop

ColorGradient son ahora Gradient y ColorGradientStop GradientStop .

ThemeColor

ThemeColor es ahora Color.

API de datos

Ya no es necesario crear matrices de datos con new. Por ejemplo, cuando se creaban datos para el gráfico de barras en Qt DataVisualization, se hacía así:

// Qt DataVisualization approach.
QBarDataRow *data = new QBarDataRow;
*data << 1.0f << 3.0f << 7.5f << 5.0f << 2.2f;

Ahora se hace así:

// Qt Graphs approach.
QBarDataRow data;
data << 1.0f << 3.0f << 7.5f << 5.0f << 2.2f;
series->dataProxy()->addRow(data);

APIs de cámara

Como Q3DCamera fue removido, las funciones requeridas de él fueron movidas. cameraPreset, cameraTargetPosition, cameraXRotation, cameraYRotation, cameraZoomLevel, wrapCameraXRotation, and wrapCameraYRotation son ahora las partes de GraphsItem3D.

APIs de temas

Como Q3DTheme fue eliminado y la tematización entre gráficos 2D y 3D unificada, algunas de las funciones requeridas de él se han movido, y el resto se puede encontrar en el reemplazo, GraphsTheme. lightColor, ambientLightStrength, lightStrength, and shadowStrength se implementan ahora en GraphsItem3D.

windowColor se ha eliminado. backgroundColor hace ahora lo que hacía windowColor, y una nueva función plotAreaBackgroundColor sustituye la funcionalidad de lo que hacía anteriormente backgroundColor.

El esquema de color genérico de todo el gráfico se controla ahora mediante una propiedad color scheme, y los colores de las series mediante una propiedad theme. Si el esquema de color no se establece explícitamente, seguirá la temática del escritorio (Claro/Oscuro).

Enums

En Qt Graphs, todos los enums se implementan como enums de ámbito, por ejemplo, para el QAbstract3DGraph::ShadowQualityLow en Qt DataVisualization, el enum correspondiente en Qt Graphs es QtGraphs3D::ShadowQuality::Low.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.