En esta página

Qt Graphs Visión general para 3D

El módulo Qt Graphs proporciona una forma de desarrollar gráficos 3D complejos y dinámicos de respuesta rápida para sectores que exigen análisis, como la investigación académica y la medicina. Qt Graphs proporciona gráficos 3D de barras, dispersión y superficie. La combinación de la interacción del usuario y el dibujo de gráficos 3D en tiempo real permite crear interfaces de usuario que utilizan el espacio de forma eficaz. El cambio entre la presentación 3D y 2D permite utilizar realmente el valor del 3D en la visualización de datos.

El aspecto de los gráficos puede personalizarse utilizando los temas predefinidos o definiendo otros nuevos. Además, las escenas pueden personalizarse especificando la configuración de la cámara, y los elementos individuales pueden personalizarse utilizando mallas predefinidas o definidas por el usuario.

Qt Graphs ofrece proxies de datos listos para usar que pueden utilizarse para visualizar datos de modelos de elementos Qt y mapas de alturas. Cada tipo de gráfico tiene un tipo de proxy básico, que acepta datos en un formato adecuado para ese gráfico. Para obtener más información, consulte Qt Graphs Manejo de datos con 3D.

Los usuarios finales pueden interactuar con los datos presentados por los gráficos de varias maneras, incluyendo la rotación de gráficos, el zoom dentro y fuera de los datos, la selección de elementos y la visualización de cortes 2D de los datos 3D para una mayor legibilidad. Para obtener más información, consulte Qt Graphs Interacción con datos en 3D.

Tipos de gráficos

El módulo Qt Graphs proporciona los siguientes tipos de gráficos 3D:

La clase Q3DGraphsWidgetItem proporciona un widget API para sus propias subclases, Q3DBarsWidgetItem, Q3DScatterWidgetItem, y Q3DSurfaceWidgetItem que implementan los diferentes tipos de gráficos: barras, dispersión y superficie. El tipo de gráfico determina cómo se presentan los datos.

Toda la representación tiene lugar en QQuickGraphsItem, que hereda de QQuick3DViewport, que a su vez ofrece View3D utilizando QtQuick3D. Tiene sus propias subclases para Bars3D, Scatter3D, y Surface3D.

Gráficos de barras en 3D

Los gráficos de barras 3D presentan los datos como barras 3D agrupadas por categorías. La clase Q3DGraphsWidgetItem se utiliza para crear un gráfico. Las clases QBar3DSeries y QBarDataProxy se utilizan para asignar datos al gráfico y controlar las propiedades visuales del mismo, como el modo de dibujo y el sombreado. En QML, las clases correspondientes son Bars3D, Bar3DSeries, y BarDataProxy.

Para obtener más información, consulte How to construct a minimal Q3DBarsWidgetItem graph y los ejemplos de gráficos de barras simples.

Gráficos de dispersión 3D

Los gráficos de dispersión 3D presentan los datos como una colección de puntos o una spline. La clase Q3DScatterWidgetItem se utiliza para crear un gráfico. Las clases QScatter3DSeries o QSpline3DSeries y QScatterDataProxy se utilizan para asignar datos al gráfico y controlar las propiedades visuales del mismo. En QML, las clases correspondientes son Scatter3D, Scatter3DSeries, Spline3DSeries y ScatterDataProxy.

Para más información, consulte los ejemplos How to construct a minimal Q3DScatterWidgetItem graph y Gráfico de dispersión simple.

Gráficos de superficie 3D

Los gráficos de superficie 3D presentan los datos como gráficos de superficie 3D. La clase Q3DSurfaceWidgetItem se utiliza para crear un gráfico. Las clases QSurface3DSeries y QSurfaceDataProxy se utilizan para asignar datos al gráfico y controlar las propiedades visuales del mismo. En QML, las clases correspondientes son Surface3D, Surface3DSeries, y SurfaceDataProxy.

Para obtener más información, consulte los ejemplos How to construct a minimal Q3DSurfaceWidgetItem graph, Graph Gallery y Surface Graph Gallery.

Uso de OpenGL ES para el renderizado de datos

Qt Graphs se basa en QtQuick3D, lo que significa que Qt Graphs utiliza el backend nativo de la plataforma de destino para el renderizado. Sin embargo, si OpenGL ES2 acaba siendo utilizado en objetivos que no soportan nada por encima de él, como OpenGL ES3 o Vulkan, las siguientes características no son soportadas:

Selección del modo de renderizado

En QML, puedes establecer la propiedad GraphsItem3D.RenderingMode para determinar si el gráfico se renderizará directamente en el fondo de la ventana o en una superficie fuera de la pantalla que luego se dibujará durante el renderizado normal de elementos QML.

Los modos de renderizado de fondo ofrecen un rendimiento ligeramente superior al modo de renderizado indirecto, a costa de un comportamiento QML no estándar. Por ejemplo, los gráficos no admiten antialiasing. Por lo tanto, cambiar el modo de renderizado es una cuestión de rendimiento frente a calidad.

Qt Quick utiliza un scenegraph dedicado para el renderizado de datos, y es por tanto la mejor opción para gráficos.

Ejes 3D

Qt Graphs soporta los siguientes tipos de ejes:

  • Eje de valor
  • Eje de categoría

Un eje puede configurarse para mostrar una línea o una cuadrícula. Ambos tipos de eje son especializaciones de la clase QAbstract3DAxis o del tipo QML Abstract3DAxis.

Para un eje de valor, puede establecer un rango de valores y un recuento de segmentos y subsegmentos para dividir el rango. Por defecto, se dibujan etiquetas entre cada segmento. Por defecto, se dibujan líneas de cuadrícula entre cada segmento y cada subsegmento. El eje de valores se implementa utilizando la clase QValue3DAxis o el tipo QML Value3DAxis.

Un eje de categoría tiene rangos con nombre y anchos de rango ajustables. Se divide en categorías de igual tamaño basadas en el tamaño de la ventana de datos definida por el rango del eje. Las etiquetas se dibujan en las posiciones de las categorías por defecto, si se proporcionan. Por defecto, se dibujan líneas de cuadrícula entre las categorías. Un eje de categoría se implementa utilizando la clase QCategory3DAxis o el tipo QML Category3DAxis.

Si no se establecen ejes explícitamente para un gráfico, se crean ejes temporales por defecto sin etiquetas. Estos ejes predeterminados pueden modificarse mediante los accesores de ejes, pero en cuanto se establece explícitamente un eje para una orientación determinada, se destruye el eje predeterminado para esa orientación.

Todos los tipos de gráficos permiten mostrar varias series simultáneamente. No es necesario que todas las series contengan el mismo número de filas y columnas. Las etiquetas de filas y columnas se toman de la primera serie añadida, a menos que se definan explícitamente para los ejes de filas y columnas.

Los formateadores de ejes pueden utilizarse para personalizar las líneas y etiquetas de la rejilla de los ejes de valores. La clase QValue3DAxisFormatter y el tipo QML Value3DAxisFormatter proporcionan reglas de formato para un eje 3D de valor lineal. La clase QLogValue3DAxisFormatter y el tipo QML LogValue3DAxisFormatter proporcionan reglas de formato para un eje 3D de valor logarítmico.

Los ejes horizontales polares pueden utilizarse para gráficos de superficie y de dispersión estableciendo la propiedad polar. También puede establecerse para barras, pero al hacerlo se producirá una advertencia y se ignorará.

Personalización de escenas 3D

Como Qt Graphs está construido sobre QtQuick3D, es posible integrar escenas QtQuick3D en escenas Qt Graphs. Para más información, consulte Qt Graphs Integración con Qt Quick 3D.

Personalización de elementos

Qt Graphs dispone de tipos de malla predefinidos para barras y elementos de dispersión. El tipo de malla determina el aspecto de una barra o un elemento de dispersión en un gráfico. También puede especificar una geometría personalizada como archivo de malla. Para obtener más información, consulte QAbstract3DSeries::userDefinedMesh(). Para mayor variedad, se puede establecer un cuaternión para la rotación de la malla.

Además de personalizar elementos individuales, puede utilizar la clase QCustom3DItem o el tipo QML Custom3DItem para añadir elementos personalizados a los gráficos. Los elementos tienen malla personalizada, posición, escala, rotación y una textura opcional.

Utilice la clase QCustom3DVolume y el tipo QML Custom3DVolume para crear objetos renderizados por volumen que se añadirán a un gráfico. Un objeto de volumen es una caja con una textura 3D. Se admiten tres planos de corte para el volumen, uno a lo largo de cada eje principal del volumen.

La clase QCustom3DLabel y el tipo QML Custom3DLabel implementan etiquetas personalizadas con el texto, la fuente, la posición, la escala y la rotación especificados. El tema activo determina los colores de las etiquetas, los bordes y el fondo.

Manejo de entradas personalizadas

Qt Graphs implementa manejadores de entrada por defecto para acciones típicas como seleccionar, rotar y hacer zoom. Para implementar manejadores de entrada personalizados en lugar de los predeterminados, anule las señales de entrada necesarias.

onTapped: {
    // Disable the default input handler
    unsetDefaultTapHandler()
    // Implement own custom event handler
    console.log("Custom tap event handler")
}

© 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.