Sophie

Sophie

distrib > Mageia > 6 > x86_64 > media > core-updates > by-pkgid > 19952c5e751bf7e3108c3c59625b0f35 > files > 304

qtcharts5-doc-5.9.4-1.mga6.noarch.rpm

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- examples-datetimeaxis.qdoc -->
  <title>DateTimeAxis Example | Qt Charts 5.9</title>
  <link rel="stylesheet" type="text/css" href="style/offline-simple.css" />
  <script type="text/javascript">
    document.getElementsByTagName("link").item(0).setAttribute("href", "style/offline.css");
    // loading style sheet breaks anchors that were jumped to before
    // so force jumping to anchor again
    setTimeout(function() {
        var anchor = location.hash;
        // need to jump to different anchor first (e.g. none)
        location.hash = "#";
        setTimeout(function() {
            location.hash = anchor;
        }, 0);
    }, 0);
  </script>
</head>
<body>
<div class="header" id="qtdocheader">
  <div class="main">
    <div class="main-rounded">
      <div class="navigationbar">
        <table><tr>
<td >Qt 5.9</td><td ><a href="qtcharts-index.html">Qt Charts</a></td><td ><a href="qtcharts-examples.html">Qt Charts Examples</a></td><td >DateTimeAxis Example</td></tr></table><table class="buildversion"><tr>
<td id="buildversion" width="100%" align="right">Qt 5.9.4 Reference Documentation</td>
        </tr></table>
      </div>
    </div>
<div class="content">
<div class="line">
<div class="content mainContent">
<div class="sidebar">
<div class="toc">
<h3><a name="toc">Contents</a></h3>
<ul>
<li class="level1"><a href="#running-the-example">Running the Example</a></li>
<li class="level1"><a href="#creating-line-charts">Creating Line Charts</a></li>
</ul>
</div>
<div class="sidebar-content" id="sidebar-content"></div></div>
<h1 class="title">DateTimeAxis Example</h1>
<span class="subtitle"></span>
<!-- $$$datetimeaxis-description -->
<div class="descr"> <a name="details"></a>
<p class="centerAlign"><img src="images/examples_datetimeaxis.png" alt="" /></p><a name="running-the-example"></a>
<h2 id="running-the-example">Running the Example</h2>
<p>To run the example from Qt Creator, open the <b>Welcome</b> mode and select the example from <b>Examples</b>. For more information, visit Building and Running an Example.</p>
<a name="creating-line-charts"></a>
<h2 id="creating-line-charts">Creating Line Charts</h2>
<p>To create line chart, <a href="qlineseries.html">QLineSeries</a> instance is needed. Let's create one.</p>
<pre class="cpp">

  <span class="type"><a href="qlineseries.html">QLineSeries</a></span> <span class="operator">*</span>series <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="qlineseries.html">QLineSeries</a></span>();

</pre>
<p>On the charts we will present how the number of sun spots changes in time. The data (from the Space Weather Prediction Center) is read from a text file. In the snippet below, notice how the QDateTime::toMSecsSinceEpoch method is used to convert the QDateTime object into a number that can be passed to the <a href="qlineseries.html">QLineSeries</a> append method.</p>
<pre class="cpp">

  <span class="comment">// data from http://www.swpc.noaa.gov/ftpdir/weekly/RecentIndices.txt</span>
  <span class="comment">// http://www.swpc.noaa.gov/ftpdir/weekly/README</span>
  <span class="comment">// http://www.weather.gov/disclaimer</span>
  <span class="type">QFile</span> sunSpots(<span class="string">&quot;:sun&quot;</span>);
  <span class="keyword">if</span> (<span class="operator">!</span>sunSpots<span class="operator">.</span>open(<span class="type">QIODevice</span><span class="operator">::</span>ReadOnly <span class="operator">|</span> <span class="type">QIODevice</span><span class="operator">::</span>Text)) {
      <span class="keyword">return</span> <span class="number">1</span>;
  }

  <span class="type">QTextStream</span> stream(<span class="operator">&amp;</span>sunSpots);
  <span class="keyword">while</span> (<span class="operator">!</span>stream<span class="operator">.</span>atEnd()) {
      <span class="type">QString</span> line <span class="operator">=</span> stream<span class="operator">.</span>readLine();
      <span class="keyword">if</span> (line<span class="operator">.</span>startsWith(<span class="string">&quot;#&quot;</span>) <span class="operator">|</span><span class="operator">|</span> line<span class="operator">.</span>startsWith(<span class="string">&quot;:&quot;</span>))
          <span class="keyword">continue</span>;
      <span class="type">QStringList</span> values <span class="operator">=</span> line<span class="operator">.</span>split(<span class="string">&quot; &quot;</span><span class="operator">,</span> <span class="type">QString</span><span class="operator">::</span>SkipEmptyParts);
      <span class="type">QDateTime</span> momentInTime;
      momentInTime<span class="operator">.</span>setDate(<span class="type">QDate</span>(values<span class="operator">[</span><span class="number">0</span><span class="operator">]</span><span class="operator">.</span>toInt()<span class="operator">,</span> values<span class="operator">[</span><span class="number">1</span><span class="operator">]</span><span class="operator">.</span>toInt() <span class="operator">,</span> <span class="number">15</span>));
      series<span class="operator">-</span><span class="operator">&gt;</span>append(momentInTime<span class="operator">.</span>toMSecsSinceEpoch()<span class="operator">,</span> values<span class="operator">[</span><span class="number">2</span><span class="operator">]</span><span class="operator">.</span>toDouble());
  }
  sunSpots<span class="operator">.</span>close();

</pre>
<p>To present the data on the chart we need the <a href="qchart.html">QChart</a> instance. We add the series to it, hide the legend, create the default axes and set the title of the chart.</p>
<pre class="cpp">

  <span class="type"><a href="qchart.html">QChart</a></span> <span class="operator">*</span>chart <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="qchart.html">QChart</a></span>();
  chart<span class="operator">-</span><span class="operator">&gt;</span>addSeries(series);
  chart<span class="operator">-</span><span class="operator">&gt;</span>legend()<span class="operator">-</span><span class="operator">&gt;</span>hide();
  chart<span class="operator">-</span><span class="operator">&gt;</span>setTitle(<span class="string">&quot;Sunspots count (by Space Weather Prediction Center)&quot;</span>);

</pre>
<p>Since we use <a href="qlineseries.html">QLineSeries</a>, calling createDefaultAxes will create <a href="qvalueaxis.html">QValueAxis</a> both as X- and Y-axis. To use <a href="qdatetimeaxis.html">QDateTimeAxis</a> we need to set it manually to the chart. First, the instance of <a href="qdatetimeaxis.html">QDateTimeAxis</a> is created, then the number of ticks to be shown is set. The number of sun spots is provided as an average for the month. Therefore we don't need the axis labels to contain the information about the time and the day. This is achieved by setting a custom label format. Please refer to the QDateTime::toString() method documentation to learn about the available format options.</p>
<pre class="cpp">

  <span class="type"><a href="qdatetimeaxis.html">QDateTimeAxis</a></span> <span class="operator">*</span>axisX <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="qdatetimeaxis.html">QDateTimeAxis</a></span>;
  axisX<span class="operator">-</span><span class="operator">&gt;</span>setTickCount(<span class="number">10</span>);
  axisX<span class="operator">-</span><span class="operator">&gt;</span>setFormat(<span class="string">&quot;MMM yyyy&quot;</span>);
  axisX<span class="operator">-</span><span class="operator">&gt;</span>setTitleText(<span class="string">&quot;Date&quot;</span>);
  chart<span class="operator">-</span><span class="operator">&gt;</span>addAxis(axisX<span class="operator">,</span> <span class="type">Qt</span><span class="operator">::</span>AlignBottom);
  series<span class="operator">-</span><span class="operator">&gt;</span>attachAxis(axisX);

  <span class="type"><a href="qvalueaxis.html">QValueAxis</a></span> <span class="operator">*</span>axisY <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="qvalueaxis.html">QValueAxis</a></span>;
  axisY<span class="operator">-</span><span class="operator">&gt;</span>setLabelFormat(<span class="string">&quot;%i&quot;</span>);
  axisY<span class="operator">-</span><span class="operator">&gt;</span>setTitleText(<span class="string">&quot;Sunspots count&quot;</span>);
  chart<span class="operator">-</span><span class="operator">&gt;</span>addAxis(axisY<span class="operator">,</span> <span class="type">Qt</span><span class="operator">::</span>AlignLeft);
  series<span class="operator">-</span><span class="operator">&gt;</span>attachAxis(axisY);

</pre>
<p>Then we create a <a href="qchartview.html">QChartView</a> object with <a href="qchart.html">QChart</a> as a parameter. This way we don't need to create the QGraphicsView scene ourselves. We also set the Antialiasing on to have the rendered lines look nicer.</p>
<pre class="cpp">

  <span class="type"><a href="qchartview.html">QChartView</a></span> <span class="operator">*</span>chartView <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="qchartview.html">QChartView</a></span>(chart);
  chartView<span class="operator">-</span><span class="operator">&gt;</span>setRenderHint(<span class="type">QPainter</span><span class="operator">::</span>Antialiasing);

</pre>
<p>The chart is ready to be shown.</p>
<pre class="cpp">

  <span class="type">QMainWindow</span> window;
  window<span class="operator">.</span>setCentralWidget(chartView);
  window<span class="operator">.</span>resize(<span class="number">820</span><span class="operator">,</span> <span class="number">600</span>);
  window<span class="operator">.</span>show();

</pre>
<p>Files:</p>
<ul>
<li><a href="qtcharts-datetimeaxis-main-cpp.html">datetimeaxis/main.cpp</a></li>
<li><a href="qtcharts-datetimeaxis-datetimeaxis-pro.html">datetimeaxis/datetimeaxis.pro</a></li>
<li><a href="qtcharts-datetimeaxis-sundata-qrc.html">datetimeaxis/sundata.qrc</a></li>
</ul>
</div>
<!-- @@@datetimeaxis -->
        </div>
       </div>
   </div>
   </div>
</div>
<div class="footer">
   <p>
   <acronym title="Copyright">&copy;</acronym> 2017 The Qt Company Ltd.
   Documentation contributions included herein are the copyrights of
   their respective owners.<br>    The documentation provided herein is licensed under the terms of the    <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation    License version 1.3</a> as published by the Free Software Foundation.<br>    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. </p>
</div>
</body>
</html>