<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>customitemgraph.cpp Example File | Qt Data Visualization 5.12.2</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.12</td><td ><a href="qtdatavisualization-index.html">Qt Data Visualization</a></td><td ><a href="qtdatavisualization-customitems-example.html">Custom Items Example</a></td><td >customitemgraph.cpp Example File</td></tr></table><table class="buildversion"><tr> <td id="buildversion" width="100%" align="right"><a href="qtdatavisualization-index.html">Qt Data Visualization | Commercial or GPLv3</a></td> </tr></table> </div> </div> <div class="content"> <div class="line"> <div class="content mainContent"> <div class="sidebar"><div class="sidebar-content" id="sidebar-content"></div></div> <h1 class="title">customitemgraph.cpp Example File</h1> <span class="subtitle">customitems/customitemgraph.cpp</span> <!-- $$$customitems/customitemgraph.cpp-description --> <div class="descr"> <a name="details"></a> <pre class="cpp"> <span class="comment">/**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Data Visualization module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:GPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3 or (at your option) any later version ** approved by the KDE Free Qt Foundation. The licenses are as published by ** the Free Software Foundation and appearing in the file LICENSE.GPL3 ** included in the packaging of this file. Please review the following ** information to ensure the GNU General Public License requirements will ** be met: https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** ****************************************************************************/</span> <span class="preprocessor">#include "customitemgraph.h"</span> <span class="preprocessor">#include <QtDataVisualization/Q3DTheme></span> <span class="preprocessor">#include <QtDataVisualization/QCustom3DItem></span> <span class="preprocessor">#include <QtDataVisualization/QCustom3DLabel></span> <span class="preprocessor">#include <QtGui/QImage></span> <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="type">QtDataVisualization</span>; CustomItemGraph<span class="operator">::</span>CustomItemGraph(<span class="type"><a href="q3dsurface.html">Q3DSurface</a></span> <span class="operator">*</span>surface<span class="operator">,</span> <span class="type">QLabel</span> <span class="operator">*</span>label) : m_graph(surface)<span class="operator">,</span> m_textField(label)<span class="operator">,</span> m_previouslyAnimatedItem(<span class="number">0</span>) { <span class="type">QImage</span> layerOneHMap(<span class="string">":/maps/layer_1.png"</span>); <span class="type"><a href="qheightmapsurfacedataproxy.html">QHeightMapSurfaceDataProxy</a></span> <span class="operator">*</span>layerOneProxy <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="qheightmapsurfacedataproxy.html">QHeightMapSurfaceDataProxy</a></span>(layerOneHMap); QSurface3DSeries <span class="operator">*</span>layerOneSeries <span class="operator">=</span> <span class="keyword">new</span> QSurface3DSeries(layerOneProxy); layerOneSeries<span class="operator">-</span><span class="operator">></span>setItemLabelFormat(<span class="type">QStringLiteral</span>(<span class="string">"(@xLabel, @zLabel): @yLabel"</span>)); layerOneProxy<span class="operator">-</span><span class="operator">></span>setValueRanges(<span class="number">34.0f</span><span class="operator">,</span> <span class="number">40.0f</span><span class="operator">,</span> <span class="number">18.0f</span><span class="operator">,</span> <span class="number">24.0f</span>); layerOneSeries<span class="operator">-</span><span class="operator">></span>setDrawMode(QSurface3DSeries<span class="operator">::</span>DrawSurface); layerOneSeries<span class="operator">-</span><span class="operator">></span>setFlatShadingEnabled(<span class="keyword">false</span>); <span class="type">QImage</span> layerTwoHMap(<span class="string">":/maps/layer_2.png"</span>); <span class="type"><a href="qheightmapsurfacedataproxy.html">QHeightMapSurfaceDataProxy</a></span> <span class="operator">*</span>layerTwoProxy <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="qheightmapsurfacedataproxy.html">QHeightMapSurfaceDataProxy</a></span>(layerTwoHMap); QSurface3DSeries <span class="operator">*</span>layerTwoSeries <span class="operator">=</span> <span class="keyword">new</span> QSurface3DSeries(layerTwoProxy); layerTwoSeries<span class="operator">-</span><span class="operator">></span>setItemLabelFormat(<span class="type">QStringLiteral</span>(<span class="string">"(@xLabel, @zLabel): @yLabel"</span>)); layerTwoProxy<span class="operator">-</span><span class="operator">></span>setValueRanges(<span class="number">34.0f</span><span class="operator">,</span> <span class="number">40.0f</span><span class="operator">,</span> <span class="number">18.0f</span><span class="operator">,</span> <span class="number">24.0f</span>); layerTwoSeries<span class="operator">-</span><span class="operator">></span>setDrawMode(QSurface3DSeries<span class="operator">::</span>DrawSurface); layerTwoSeries<span class="operator">-</span><span class="operator">></span>setFlatShadingEnabled(<span class="keyword">false</span>); <span class="type">QImage</span> layerThreeHMap(<span class="string">":/maps/layer_3.png"</span>); <span class="type"><a href="qheightmapsurfacedataproxy.html">QHeightMapSurfaceDataProxy</a></span> <span class="operator">*</span>layerThreeProxy <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="qheightmapsurfacedataproxy.html">QHeightMapSurfaceDataProxy</a></span>(layerThreeHMap); QSurface3DSeries <span class="operator">*</span>layerThreeSeries <span class="operator">=</span> <span class="keyword">new</span> QSurface3DSeries(layerThreeProxy); layerThreeSeries<span class="operator">-</span><span class="operator">></span>setItemLabelFormat(<span class="type">QStringLiteral</span>(<span class="string">"(@xLabel, @zLabel): @yLabel"</span>)); layerThreeProxy<span class="operator">-</span><span class="operator">></span>setValueRanges(<span class="number">34.0f</span><span class="operator">,</span> <span class="number">40.0f</span><span class="operator">,</span> <span class="number">18.0f</span><span class="operator">,</span> <span class="number">24.0f</span>); layerThreeSeries<span class="operator">-</span><span class="operator">></span>setDrawMode(QSurface3DSeries<span class="operator">::</span>DrawSurface); layerThreeSeries<span class="operator">-</span><span class="operator">></span>setFlatShadingEnabled(<span class="keyword">false</span>); m_graph<span class="operator">-</span><span class="operator">></span>axisX()<span class="operator">-</span><span class="operator">></span>setLabelFormat(<span class="string">"%.1f N"</span>); m_graph<span class="operator">-</span><span class="operator">></span>axisZ()<span class="operator">-</span><span class="operator">></span>setLabelFormat(<span class="string">"%.1f E"</span>); m_graph<span class="operator">-</span><span class="operator">></span>axisX()<span class="operator">-</span><span class="operator">></span>setRange(<span class="number">34.0f</span><span class="operator">,</span> <span class="number">40.0f</span>); m_graph<span class="operator">-</span><span class="operator">></span>axisY()<span class="operator">-</span><span class="operator">></span>setRange(<span class="number">0.0f</span><span class="operator">,</span> <span class="number">200.0f</span>); m_graph<span class="operator">-</span><span class="operator">></span>axisZ()<span class="operator">-</span><span class="operator">></span>setRange(<span class="number">18.0f</span><span class="operator">,</span> <span class="number">24.0f</span>); m_graph<span class="operator">-</span><span class="operator">></span>axisX()<span class="operator">-</span><span class="operator">></span>setTitle(<span class="type">QStringLiteral</span>(<span class="string">"Latitude"</span>)); m_graph<span class="operator">-</span><span class="operator">></span>axisY()<span class="operator">-</span><span class="operator">></span>setTitle(<span class="type">QStringLiteral</span>(<span class="string">"Height"</span>)); m_graph<span class="operator">-</span><span class="operator">></span>axisZ()<span class="operator">-</span><span class="operator">></span>setTitle(<span class="type">QStringLiteral</span>(<span class="string">"Longitude"</span>)); m_graph<span class="operator">-</span><span class="operator">></span>addSeries(layerOneSeries); m_graph<span class="operator">-</span><span class="operator">></span>addSeries(layerTwoSeries); m_graph<span class="operator">-</span><span class="operator">></span>addSeries(layerThreeSeries); <span class="type">QLinearGradient</span> grOne; grOne<span class="operator">.</span>setColorAt(<span class="number">0.0</span><span class="operator">,</span> <span class="type">Qt</span><span class="operator">::</span>black); grOne<span class="operator">.</span>setColorAt(<span class="number">0.38</span><span class="operator">,</span> <span class="type">Qt</span><span class="operator">::</span>darkYellow); grOne<span class="operator">.</span>setColorAt(<span class="number">0.39</span><span class="operator">,</span> <span class="type">Qt</span><span class="operator">::</span>darkGreen); grOne<span class="operator">.</span>setColorAt(<span class="number">0.5</span><span class="operator">,</span> <span class="type">Qt</span><span class="operator">::</span>darkGray); grOne<span class="operator">.</span>setColorAt(<span class="number">1.0</span><span class="operator">,</span> <span class="type">Qt</span><span class="operator">::</span>gray); m_graph<span class="operator">-</span><span class="operator">></span>seriesList()<span class="operator">.</span>at(<span class="number">0</span>)<span class="operator">-</span><span class="operator">></span>setBaseGradient(grOne); m_graph<span class="operator">-</span><span class="operator">></span>seriesList()<span class="operator">.</span>at(<span class="number">0</span>)<span class="operator">-</span><span class="operator">></span>setColorStyle(<span class="type"><a href="q3dtheme.html">Q3DTheme</a></span><span class="operator">::</span>ColorStyleRangeGradient); <span class="type">QLinearGradient</span> grTwo; grTwo<span class="operator">.</span>setColorAt(<span class="number">0.385</span><span class="operator">,</span> <span class="type">Qt</span><span class="operator">::</span>blue); grTwo<span class="operator">.</span>setColorAt(<span class="number">0.395</span><span class="operator">,</span> <span class="type">Qt</span><span class="operator">::</span>white); m_graph<span class="operator">-</span><span class="operator">></span>seriesList()<span class="operator">.</span>at(<span class="number">1</span>)<span class="operator">-</span><span class="operator">></span>setBaseGradient(grTwo); m_graph<span class="operator">-</span><span class="operator">></span>seriesList()<span class="operator">.</span>at(<span class="number">1</span>)<span class="operator">-</span><span class="operator">></span>setColorStyle(<span class="type"><a href="q3dtheme.html">Q3DTheme</a></span><span class="operator">::</span>ColorStyleRangeGradient); <span class="type">QLinearGradient</span> grThree; grThree<span class="operator">.</span>setColorAt(<span class="number">0.0</span><span class="operator">,</span> <span class="type">Qt</span><span class="operator">::</span>white); grThree<span class="operator">.</span>setColorAt(<span class="number">0.05</span><span class="operator">,</span> <span class="type">Qt</span><span class="operator">::</span>black); m_graph<span class="operator">-</span><span class="operator">></span>seriesList()<span class="operator">.</span>at(<span class="number">2</span>)<span class="operator">-</span><span class="operator">></span>setBaseGradient(grThree); m_graph<span class="operator">-</span><span class="operator">></span>seriesList()<span class="operator">.</span>at(<span class="number">2</span>)<span class="operator">-</span><span class="operator">></span>setColorStyle(<span class="type"><a href="q3dtheme.html">Q3DTheme</a></span><span class="operator">::</span>ColorStyleRangeGradient); m_graph<span class="operator">-</span><span class="operator">></span>scene()<span class="operator">-</span><span class="operator">></span>activeCamera()<span class="operator">-</span><span class="operator">></span>setCameraPreset(<span class="type"><a href="q3dcamera.html">Q3DCamera</a></span><span class="operator">::</span>CameraPresetFront); connect(m_graph<span class="operator">,</span> <span class="operator">&</span>QAbstract3DGraph<span class="operator">::</span>selectedElementChanged<span class="operator">,</span> <span class="keyword">this</span><span class="operator">,</span> <span class="operator">&</span>CustomItemGraph<span class="operator">::</span>handleElementSelected); m_selectionAnimation <span class="operator">=</span> <span class="keyword">new</span> <span class="type">QPropertyAnimation</span>(<span class="keyword">this</span>); m_selectionAnimation<span class="operator">-</span><span class="operator">></span>setPropertyName(<span class="string">"scaling"</span>); m_selectionAnimation<span class="operator">-</span><span class="operator">></span>setDuration(<span class="number">500</span>); m_selectionAnimation<span class="operator">-</span><span class="operator">></span>setLoopCount(<span class="operator">-</span><span class="number">1</span>); <span class="type">QFont</span> titleFont <span class="operator">=</span> <span class="type">QFont</span>(<span class="string">"Century Gothic"</span><span class="operator">,</span> <span class="number">30</span>); titleFont<span class="operator">.</span>setBold(<span class="keyword">true</span>); QCustom3DLabel <span class="operator">*</span>titleLabel <span class="operator">=</span> <span class="keyword">new</span> QCustom3DLabel(<span class="string">"Oil Rigs on Imaginary Sea"</span><span class="operator">,</span> titleFont<span class="operator">,</span> QVector3D(<span class="number">0.0f</span><span class="operator">,</span> <span class="number">1.2f</span><span class="operator">,</span> <span class="number">0.0f</span>)<span class="operator">,</span> QVector3D(<span class="number">1.0f</span><span class="operator">,</span> <span class="number">1.0f</span><span class="operator">,</span> <span class="number">0.0f</span>)<span class="operator">,</span> <span class="type">QQuaternion</span>()); titleLabel<span class="operator">-</span><span class="operator">></span>setPositionAbsolute(<span class="keyword">true</span>); titleLabel<span class="operator">-</span><span class="operator">></span>setFacingCamera(<span class="keyword">true</span>); titleLabel<span class="operator">-</span><span class="operator">></span>setBackgroundColor(<span class="type">QColor</span>(<span class="number">0x66cdaa</span>)); m_graph<span class="operator">-</span><span class="operator">></span>addCustomItem(titleLabel); toggleItemOne(<span class="keyword">true</span>); toggleItemTwo(<span class="keyword">true</span>); } CustomItemGraph<span class="operator">::</span><span class="operator">~</span>CustomItemGraph() { <span class="keyword">delete</span> m_graph; } <span class="type">void</span> CustomItemGraph<span class="operator">::</span>toggleItemOne(bool show) { QVector3D positionOne <span class="operator">=</span> QVector3D(<span class="number">39.0f</span><span class="operator">,</span> <span class="number">77.0f</span><span class="operator">,</span> <span class="number">19.2f</span>); QVector3D positionOnePipe <span class="operator">=</span> QVector3D(<span class="number">39.0f</span><span class="operator">,</span> <span class="number">45.0f</span><span class="operator">,</span> <span class="number">19.2f</span>); QVector3D positionOneLabel <span class="operator">=</span> QVector3D(<span class="number">39.0f</span><span class="operator">,</span> <span class="number">107.0f</span><span class="operator">,</span> <span class="number">19.2f</span>); <span class="keyword">if</span> (show) { <span class="type">QImage</span> color <span class="operator">=</span> <span class="type">QImage</span>(<span class="number">2</span><span class="operator">,</span> <span class="number">2</span><span class="operator">,</span> <span class="type">QImage</span><span class="operator">::</span>Format_RGB32); color<span class="operator">.</span>fill(<span class="type">Qt</span><span class="operator">::</span>red); QCustom3DItem <span class="operator">*</span>item <span class="operator">=</span> <span class="keyword">new</span> QCustom3DItem(<span class="string">":/items/oilrig.obj"</span><span class="operator">,</span> positionOne<span class="operator">,</span> QVector3D(<span class="number">0.025f</span><span class="operator">,</span> <span class="number">0.025f</span><span class="operator">,</span> <span class="number">0.025f</span>)<span class="operator">,</span> <span class="type">QQuaternion</span><span class="operator">::</span>fromAxisAndAngle(<span class="number">0.0f</span><span class="operator">,</span> <span class="number">1.0f</span><span class="operator">,</span> <span class="number">0.0f</span><span class="operator">,</span> <span class="number">45.0f</span>)<span class="operator">,</span> color); m_graph<span class="operator">-</span><span class="operator">></span>addCustomItem(item); item <span class="operator">=</span> <span class="keyword">new</span> QCustom3DItem(<span class="string">":/items/pipe.obj"</span><span class="operator">,</span> positionOnePipe<span class="operator">,</span> QVector3D(<span class="number">0.005f</span><span class="operator">,</span> <span class="number">0.5f</span><span class="operator">,</span> <span class="number">0.005f</span>)<span class="operator">,</span> <span class="type">QQuaternion</span>()<span class="operator">,</span> color); item<span class="operator">-</span><span class="operator">></span>setShadowCasting(<span class="keyword">false</span>); m_graph<span class="operator">-</span><span class="operator">></span>addCustomItem(item); QCustom3DLabel <span class="operator">*</span>label <span class="operator">=</span> <span class="keyword">new</span> QCustom3DLabel(); label<span class="operator">-</span><span class="operator">></span>setText(<span class="string">"Oil Rig One"</span>); label<span class="operator">-</span><span class="operator">></span>setPosition(positionOneLabel); label<span class="operator">-</span><span class="operator">></span>setScaling(QVector3D(<span class="number">1.0f</span><span class="operator">,</span> <span class="number">1.0f</span><span class="operator">,</span> <span class="number">1.0f</span>)); m_graph<span class="operator">-</span><span class="operator">></span>addCustomItem(label); } <span class="keyword">else</span> { resetSelection(); m_graph<span class="operator">-</span><span class="operator">></span>removeCustomItemAt(positionOne); m_graph<span class="operator">-</span><span class="operator">></span>removeCustomItemAt(positionOnePipe); m_graph<span class="operator">-</span><span class="operator">></span>removeCustomItemAt(positionOneLabel); } } <span class="type">void</span> CustomItemGraph<span class="operator">::</span>toggleItemTwo(bool show) { QVector3D positionTwo <span class="operator">=</span> QVector3D(<span class="number">34.5f</span><span class="operator">,</span> <span class="number">77.0f</span><span class="operator">,</span> <span class="number">23.4f</span>); QVector3D positionTwoPipe <span class="operator">=</span> QVector3D(<span class="number">34.5f</span><span class="operator">,</span> <span class="number">45.0f</span><span class="operator">,</span> <span class="number">23.4f</span>); QVector3D positionTwoLabel <span class="operator">=</span> QVector3D(<span class="number">34.5f</span><span class="operator">,</span> <span class="number">107.0f</span><span class="operator">,</span> <span class="number">23.4f</span>); <span class="keyword">if</span> (show) { <span class="type">QImage</span> color <span class="operator">=</span> <span class="type">QImage</span>(<span class="number">2</span><span class="operator">,</span> <span class="number">2</span><span class="operator">,</span> <span class="type">QImage</span><span class="operator">::</span>Format_RGB32); color<span class="operator">.</span>fill(<span class="type">Qt</span><span class="operator">::</span>red); QCustom3DItem <span class="operator">*</span>item <span class="operator">=</span> <span class="keyword">new</span> QCustom3DItem(); item<span class="operator">-</span><span class="operator">></span>setMeshFile(<span class="string">":/items/oilrig.obj"</span>); item<span class="operator">-</span><span class="operator">></span>setPosition(positionTwo); item<span class="operator">-</span><span class="operator">></span>setScaling(QVector3D(<span class="number">0.025f</span><span class="operator">,</span> <span class="number">0.025f</span><span class="operator">,</span> <span class="number">0.025f</span>)); item<span class="operator">-</span><span class="operator">></span>setRotation(<span class="type">QQuaternion</span><span class="operator">::</span>fromAxisAndAngle(<span class="number">0.0f</span><span class="operator">,</span> <span class="number">1.0f</span><span class="operator">,</span> <span class="number">0.0f</span><span class="operator">,</span> <span class="number">25.0f</span>)); item<span class="operator">-</span><span class="operator">></span>setTextureImage(color); m_graph<span class="operator">-</span><span class="operator">></span>addCustomItem(item); item <span class="operator">=</span> <span class="keyword">new</span> QCustom3DItem(<span class="string">":/items/pipe.obj"</span><span class="operator">,</span> positionTwoPipe<span class="operator">,</span> QVector3D(<span class="number">0.005f</span><span class="operator">,</span> <span class="number">0.5f</span><span class="operator">,</span> <span class="number">0.005f</span>)<span class="operator">,</span> <span class="type">QQuaternion</span>()<span class="operator">,</span> color); item<span class="operator">-</span><span class="operator">></span>setShadowCasting(<span class="keyword">false</span>); m_graph<span class="operator">-</span><span class="operator">></span>addCustomItem(item); QCustom3DLabel <span class="operator">*</span>label <span class="operator">=</span> <span class="keyword">new</span> QCustom3DLabel(); label<span class="operator">-</span><span class="operator">></span>setText(<span class="string">"Oil Rig Two"</span>); label<span class="operator">-</span><span class="operator">></span>setPosition(positionTwoLabel); label<span class="operator">-</span><span class="operator">></span>setScaling(QVector3D(<span class="number">1.0f</span><span class="operator">,</span> <span class="number">1.0f</span><span class="operator">,</span> <span class="number">1.0f</span>)); m_graph<span class="operator">-</span><span class="operator">></span>addCustomItem(label); } <span class="keyword">else</span> { resetSelection(); m_graph<span class="operator">-</span><span class="operator">></span>removeCustomItemAt(positionTwo); m_graph<span class="operator">-</span><span class="operator">></span>removeCustomItemAt(positionTwoPipe); m_graph<span class="operator">-</span><span class="operator">></span>removeCustomItemAt(positionTwoLabel); } } <span class="type">void</span> CustomItemGraph<span class="operator">::</span>toggleItemThree(bool show) { QVector3D positionThree <span class="operator">=</span> QVector3D(<span class="number">34.5f</span><span class="operator">,</span> <span class="number">86.0f</span><span class="operator">,</span> <span class="number">19.1f</span>); QVector3D positionThreeLabel <span class="operator">=</span> QVector3D(<span class="number">34.5f</span><span class="operator">,</span> <span class="number">116.0f</span><span class="operator">,</span> <span class="number">19.1f</span>); <span class="keyword">if</span> (show) { <span class="type">QImage</span> color <span class="operator">=</span> <span class="type">QImage</span>(<span class="number">2</span><span class="operator">,</span> <span class="number">2</span><span class="operator">,</span> <span class="type">QImage</span><span class="operator">::</span>Format_RGB32); color<span class="operator">.</span>fill(<span class="type">Qt</span><span class="operator">::</span>darkMagenta); QCustom3DItem <span class="operator">*</span>item <span class="operator">=</span> <span class="keyword">new</span> QCustom3DItem(); item<span class="operator">-</span><span class="operator">></span>setMeshFile(<span class="string">":/items/refinery.obj"</span>); item<span class="operator">-</span><span class="operator">></span>setPosition(positionThree); item<span class="operator">-</span><span class="operator">></span>setScaling(QVector3D(<span class="number">0.04f</span><span class="operator">,</span> <span class="number">0.04f</span><span class="operator">,</span> <span class="number">0.04f</span>)); item<span class="operator">-</span><span class="operator">></span>setRotation(<span class="type">QQuaternion</span><span class="operator">::</span>fromAxisAndAngle(<span class="number">0.0f</span><span class="operator">,</span> <span class="number">1.0f</span><span class="operator">,</span> <span class="number">0.0f</span><span class="operator">,</span> <span class="number">75.0f</span>)); item<span class="operator">-</span><span class="operator">></span>setTextureImage(color); m_graph<span class="operator">-</span><span class="operator">></span>addCustomItem(item); QCustom3DLabel <span class="operator">*</span>label <span class="operator">=</span> <span class="keyword">new</span> QCustom3DLabel(); label<span class="operator">-</span><span class="operator">></span>setText(<span class="string">"Refinery"</span>); label<span class="operator">-</span><span class="operator">></span>setPosition(positionThreeLabel); label<span class="operator">-</span><span class="operator">></span>setScaling(QVector3D(<span class="number">1.0f</span><span class="operator">,</span> <span class="number">1.0f</span><span class="operator">,</span> <span class="number">1.0f</span>)); m_graph<span class="operator">-</span><span class="operator">></span>addCustomItem(label); } <span class="keyword">else</span> { resetSelection(); m_graph<span class="operator">-</span><span class="operator">></span>removeCustomItemAt(positionThree); m_graph<span class="operator">-</span><span class="operator">></span>removeCustomItemAt(positionThreeLabel); } } <span class="type">void</span> CustomItemGraph<span class="operator">::</span>toggleSeeThrough(bool seethrough) { <span class="keyword">if</span> (seethrough) { m_graph<span class="operator">-</span><span class="operator">></span>seriesList()<span class="operator">.</span>at(<span class="number">0</span>)<span class="operator">-</span><span class="operator">></span>setDrawMode(QSurface3DSeries<span class="operator">::</span>DrawWireframe); m_graph<span class="operator">-</span><span class="operator">></span>seriesList()<span class="operator">.</span>at(<span class="number">1</span>)<span class="operator">-</span><span class="operator">></span>setDrawMode(QSurface3DSeries<span class="operator">::</span>DrawWireframe); } <span class="keyword">else</span> { m_graph<span class="operator">-</span><span class="operator">></span>seriesList()<span class="operator">.</span>at(<span class="number">0</span>)<span class="operator">-</span><span class="operator">></span>setDrawMode(QSurface3DSeries<span class="operator">::</span>DrawSurface); m_graph<span class="operator">-</span><span class="operator">></span>seriesList()<span class="operator">.</span>at(<span class="number">1</span>)<span class="operator">-</span><span class="operator">></span>setDrawMode(QSurface3DSeries<span class="operator">::</span>DrawSurface); } } <span class="type">void</span> CustomItemGraph<span class="operator">::</span>toggleOilHighlight(bool highlight) { <span class="keyword">if</span> (highlight) { <span class="type">QLinearGradient</span> grThree; grThree<span class="operator">.</span>setColorAt(<span class="number">0.0</span><span class="operator">,</span> <span class="type">Qt</span><span class="operator">::</span>black); grThree<span class="operator">.</span>setColorAt(<span class="number">0.05</span><span class="operator">,</span> <span class="type">Qt</span><span class="operator">::</span>red); m_graph<span class="operator">-</span><span class="operator">></span>seriesList()<span class="operator">.</span>at(<span class="number">2</span>)<span class="operator">-</span><span class="operator">></span>setBaseGradient(grThree); } <span class="keyword">else</span> { <span class="type">QLinearGradient</span> grThree; grThree<span class="operator">.</span>setColorAt(<span class="number">0.0</span><span class="operator">,</span> <span class="type">Qt</span><span class="operator">::</span>white); grThree<span class="operator">.</span>setColorAt(<span class="number">0.05</span><span class="operator">,</span> <span class="type">Qt</span><span class="operator">::</span>black); m_graph<span class="operator">-</span><span class="operator">></span>seriesList()<span class="operator">.</span>at(<span class="number">2</span>)<span class="operator">-</span><span class="operator">></span>setBaseGradient(grThree); } } <span class="type">void</span> CustomItemGraph<span class="operator">::</span>toggleShadows(bool shadows) { <span class="keyword">if</span> (shadows) m_graph<span class="operator">-</span><span class="operator">></span>setShadowQuality(QAbstract3DGraph<span class="operator">::</span>ShadowQualityMedium); <span class="keyword">else</span> m_graph<span class="operator">-</span><span class="operator">></span>setShadowQuality(QAbstract3DGraph<span class="operator">::</span>ShadowQualityNone); } <span class="type">void</span> CustomItemGraph<span class="operator">::</span>handleElementSelected(QAbstract3DGraph<span class="operator">::</span>ElementType type) { resetSelection(); <span class="keyword">if</span> (type <span class="operator">=</span><span class="operator">=</span> QAbstract3DGraph<span class="operator">::</span>ElementCustomItem) { QCustom3DItem <span class="operator">*</span>item <span class="operator">=</span> m_graph<span class="operator">-</span><span class="operator">></span>selectedCustomItem(); <span class="type">QString</span> text; <span class="keyword">if</span> (qobject_cast<span class="operator"><</span>QCustom3DLabel <span class="operator">*</span><span class="operator">></span>(item) <span class="operator">!</span><span class="operator">=</span> <span class="number">0</span>) { text<span class="operator">.</span>append(<span class="string">"Custom label: "</span>); } <span class="keyword">else</span> { <span class="type">QStringList</span> split <span class="operator">=</span> item<span class="operator">-</span><span class="operator">></span>meshFile()<span class="operator">.</span>split(<span class="string">"/"</span>); text<span class="operator">.</span>append(split<span class="operator">.</span>last()); text<span class="operator">.</span>append(<span class="string">": "</span>); } <span class="type">int</span> index <span class="operator">=</span> m_graph<span class="operator">-</span><span class="operator">></span>selectedCustomItemIndex(); text<span class="operator">.</span>append(<span class="type">QString</span><span class="operator">::</span>number(index)); m_textField<span class="operator">-</span><span class="operator">></span>setText(text); m_previouslyAnimatedItem <span class="operator">=</span> item; m_previousScaling <span class="operator">=</span> item<span class="operator">-</span><span class="operator">></span>scaling(); m_selectionAnimation<span class="operator">-</span><span class="operator">></span>setTargetObject(item); m_selectionAnimation<span class="operator">-</span><span class="operator">></span>setStartValue(item<span class="operator">-</span><span class="operator">></span>scaling()); m_selectionAnimation<span class="operator">-</span><span class="operator">></span>setEndValue(item<span class="operator">-</span><span class="operator">></span>scaling() <span class="operator">*</span> <span class="number">1.5f</span>); m_selectionAnimation<span class="operator">-</span><span class="operator">></span>start(); } <span class="keyword">else</span> <span class="keyword">if</span> (type <span class="operator">=</span><span class="operator">=</span> QAbstract3DGraph<span class="operator">::</span>ElementSeries) { <span class="type">QString</span> text <span class="operator">=</span> <span class="string">"Surface ("</span>; QSurface3DSeries <span class="operator">*</span>series <span class="operator">=</span> m_graph<span class="operator">-</span><span class="operator">></span>selectedSeries(); <span class="keyword">if</span> (series) { <span class="type">QPoint</span> point <span class="operator">=</span> series<span class="operator">-</span><span class="operator">></span>selectedPoint(); <span class="type">QString</span> posStr; posStr<span class="operator">.</span>setNum(point<span class="operator">.</span>x()); text<span class="operator">.</span>append(posStr); text<span class="operator">.</span>append(<span class="string">", "</span>); posStr<span class="operator">.</span>setNum(point<span class="operator">.</span>y()); text<span class="operator">.</span>append(posStr); } text<span class="operator">.</span>append(<span class="string">")"</span>); m_textField<span class="operator">-</span><span class="operator">></span>setText(text); } <span class="keyword">else</span> <span class="keyword">if</span> (type <span class="operator">></span> QAbstract3DGraph<span class="operator">::</span>ElementSeries <span class="operator">&</span><span class="operator">&</span> type <span class="operator"><</span> QAbstract3DGraph<span class="operator">::</span>ElementCustomItem) { <span class="type">int</span> index <span class="operator">=</span> m_graph<span class="operator">-</span><span class="operator">></span>selectedLabelIndex(); <span class="type">QString</span> text; <span class="keyword">if</span> (type <span class="operator">=</span><span class="operator">=</span> QAbstract3DGraph<span class="operator">::</span>ElementAxisXLabel) text<span class="operator">.</span>append(<span class="string">"Axis X label: "</span>); <span class="keyword">else</span> <span class="keyword">if</span> (type <span class="operator">=</span><span class="operator">=</span> QAbstract3DGraph<span class="operator">::</span>ElementAxisYLabel) text<span class="operator">.</span>append(<span class="string">"Axis Y label: "</span>); <span class="keyword">else</span> text<span class="operator">.</span>append(<span class="string">"Axis Z label: "</span>); text<span class="operator">.</span>append(<span class="type">QString</span><span class="operator">::</span>number(index)); m_textField<span class="operator">-</span><span class="operator">></span>setText(text); } <span class="keyword">else</span> { m_textField<span class="operator">-</span><span class="operator">></span>setText(<span class="string">"Nothing"</span>); } } <span class="type">void</span> CustomItemGraph<span class="operator">::</span>resetSelection() { m_selectionAnimation<span class="operator">-</span><span class="operator">></span>stop(); <span class="keyword">if</span> (m_previouslyAnimatedItem) m_previouslyAnimatedItem<span class="operator">-</span><span class="operator">></span>setScaling(m_previousScaling); m_previouslyAnimatedItem <span class="operator">=</span> <span class="number">0</span>; } </pre> </div> <!-- @@@customitems/customitemgraph.cpp --> </div> </div> </div> </div> </div> <div class="footer"> <p> <acronym title="Copyright">©</acronym> 2019 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>