En esta página

Gráficos de líneas con ejes de fecha y hora

Nota: Esto es parte del ejemplo de la Galería de Gráficos con Widgets.

Captura de pantalla que muestra un gráfico lineal con una estadística a lo largo de 21 años, de enero de 1991 a julio de 2012.

Ejecución del ejemplo

Para ejecutar el ejemplo desde Qt Creatorabra el modo Welcome y seleccione el ejemplo de Examples. Para más información, consulte Qt Creator: Tutorial: Construir y ejecutar.

Creación de gráficos de líneas

Para crear un gráfico de líneas, se necesita una instancia de QLineSeries. Vamos a crear uno.

auto series = new QLineSeries;

En el gráfico presentaremos cómo cambia el número de manchas solares en el tiempo. Los datos (del Space Weather Prediction Center) se leen desde un archivo de texto.

En el siguiente fragmento, observe cómo el método QDateTime::toMSecsSinceEpoch se utiliza para convertir el objeto QDateTime en un número que se puede pasar al método QLineSeries append.

// data from http://www.swpc.noaa.gov/ftpdir/weekly/RecentIndices.txt
// http://www.swpc.noaa.gov/ftpdir/weekly/README
// http://www.weather.gov/disclaimer
QFile sunSpots(":sun_spots");
if (!sunSpots.open(QIODevice::ReadOnly | QIODevice::Text)) {
    m_loadError = QStringLiteral("Failed to load '%1' file.").arg(sunSpots.fileName());
    return false;
}

QTextStream stream(&sunSpots);
while (!stream.atEnd()) {
    QString line = stream.readLine();
    if (line.startsWith("#") || line.startsWith(":"))
        continue;
    QStringList values = line.split(QLatin1Char(' '), Qt::SkipEmptyParts);
    QDateTime momentInTime;
    momentInTime.setDate(QDate(values[0].toInt(), values[1].toInt() , 15));
    series->append(momentInTime.toMSecsSinceEpoch(), values[2].toDouble());
}
sunSpots.close();

Para presentar los datos en el gráfico necesitamos la instancia QChart. Le añadimos las series, ocultamos la leyenda, creamos los ejes por defecto y establecemos el título del gráfico.

auto chart = new QChart;
chart->addSeries(series);
chart->legend()->hide();
chart->setTitle("Sunspots count (by Space Weather Prediction Center)");

Dado que utilizamos QLineSeries, al llamar a createDefaultAxes se creará QValueAxis tanto para el eje X como para el eje Y. Para utilizar QDateTimeAxis necesitamos configurarlo manualmente en el gráfico. Primero, se crea la instancia de QDateTimeAxis, luego se establece el número de ticks a mostrar. El número de manchas solares se proporciona como media del mes. Por lo tanto, no necesitamos que las etiquetas de los ejes contengan la información sobre la hora y el día. Esto se consigue estableciendo un formato de etiqueta personalizado. Consulte la documentación del método QDateTime::toString() para conocer las opciones de formato disponibles.

auto axisX = new QDateTimeAxis;
axisX->setTickCount(10);
axisX->setFormat("MMM yyyy");
axisX->setTitleText("Date");
chart->addAxis(axisX, Qt::AlignBottom);
series->attachAxis(axisX);

auto axisY = new QValueAxis;
axisY->setLabelFormat("%i");
axisY->setTitleText("Sunspots count");
chart->addAxis(axisY, Qt::AlignLeft);
series->attachAxis(axisY);

A continuación creamos un objeto QChartView con QChart como parámetro. De esta forma no necesitamos crear la escena QGraphicsView nosotros mismos. También activamos el Antialiasing para que las líneas renderizadas se vean más bonitas.

createDefaultChartView(chart);

El gráfico está listo para ser mostrado.

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