Add diagram
This commit is contained in:
parent
f0ff236203
commit
bbc1b2b631
|
@ -0,0 +1,54 @@
|
||||||
|
#include "Diagram.h"
|
||||||
|
|
||||||
|
#include <QPainter>
|
||||||
|
|
||||||
|
static constexpr int segments = 7;
|
||||||
|
|
||||||
|
Diagram::Diagram( QQuickItem* parent )
|
||||||
|
: QskControl( parent )
|
||||||
|
, m_content( new DiagramContent( this ) )
|
||||||
|
{
|
||||||
|
setAutoLayoutChildren( true );
|
||||||
|
}
|
||||||
|
|
||||||
|
void Diagram::updateLayout()
|
||||||
|
{
|
||||||
|
m_content->setContentsSize( size().toSize() );
|
||||||
|
m_content->update();
|
||||||
|
}
|
||||||
|
|
||||||
|
DiagramContent::DiagramContent( QQuickItem* parent ) : QQuickPaintedItem( parent )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void DiagramContent::paint( QPainter* painter )
|
||||||
|
{
|
||||||
|
// auto size = contentsSize();
|
||||||
|
// QRectF outerRect( {0, 0}, size );
|
||||||
|
|
||||||
|
painter->setRenderHint( QPainter::Antialiasing, true );
|
||||||
|
|
||||||
|
qreal stepSize = width() / segments;
|
||||||
|
|
||||||
|
QLinearGradient myGradient( {width() / 2, 0}, {width() / 2, height()} );
|
||||||
|
myGradient.setColorAt( 0, "#996776FF" );
|
||||||
|
myGradient.setColorAt( 1, "#116776FF" );
|
||||||
|
QPen myPen( Qt::transparent );
|
||||||
|
|
||||||
|
QPainterPath myPath;
|
||||||
|
myPath.moveTo( 0, height() );
|
||||||
|
|
||||||
|
qreal ys[7] = {0.8, 0.85, 0.92, 0.5, 0.88, 0.7, 0.8};
|
||||||
|
|
||||||
|
for( int i = 0; i < stepSize; i++ )
|
||||||
|
{
|
||||||
|
qreal x1 = i * stepSize + stepSize / 2;
|
||||||
|
qreal y = ys[i] * height();
|
||||||
|
qreal x2 = x1;
|
||||||
|
myPath.cubicTo( x1, y, x2, height() * ( 1 - ys[i] ), stepSize * ( i + 1 ), height() * ( 1 - ys[i] ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
painter->setBrush( myGradient );
|
||||||
|
painter->setPen( myPen );
|
||||||
|
painter->drawPath( myPath );
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
#ifndef DIAGRAM_H
|
||||||
|
#define DIAGRAM_H
|
||||||
|
|
||||||
|
#include <QskControl.h>
|
||||||
|
|
||||||
|
#include <QQuickPaintedItem>
|
||||||
|
|
||||||
|
class DiagramContent;
|
||||||
|
|
||||||
|
class Diagram : public QskControl
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
Diagram( QQuickItem* parent );
|
||||||
|
void updateLayout() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
DiagramContent* m_content;
|
||||||
|
};
|
||||||
|
|
||||||
|
class DiagramContent : public QQuickPaintedItem
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
DiagramContent( QQuickItem* parent);
|
||||||
|
|
||||||
|
virtual void paint(QPainter *painter) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // DIAGRAM_H
|
|
@ -1,6 +1,7 @@
|
||||||
#include "MainContent.h"
|
#include "MainContent.h"
|
||||||
|
|
||||||
#include "Card.h"
|
#include "Card.h"
|
||||||
|
#include "Diagram.h"
|
||||||
#include "Humidity.h"
|
#include "Humidity.h"
|
||||||
#include "IndoorTemperature.h"
|
#include "IndoorTemperature.h"
|
||||||
#include "MyDevices.h"
|
#include "MyDevices.h"
|
||||||
|
@ -42,6 +43,9 @@ MainContent::MainContent( QQuickItem *parent ) : QskLinearBox( Qt::Vertical, par
|
||||||
|
|
||||||
auto* myDevices = new MyDevices( gridBox );
|
auto* myDevices = new MyDevices( gridBox );
|
||||||
gridBox->addItem( myDevices, 0, 2, 2, 1 );
|
gridBox->addItem( myDevices, 0, 2, 2, 1 );
|
||||||
|
|
||||||
|
auto* diagram = new Diagram( gridBox );
|
||||||
|
gridBox->addItem( diagram, 2, 0, 0, 2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainContent::addCard( const QString& title, QskControl* content, int column )
|
void MainContent::addCard( const QString& title, QskControl* content, int column )
|
||||||
|
|
|
@ -4,6 +4,7 @@ SOURCES += \
|
||||||
Card.cpp \
|
Card.cpp \
|
||||||
CircularProgressBar.cpp \
|
CircularProgressBar.cpp \
|
||||||
DaytimeSkin.cpp \
|
DaytimeSkin.cpp \
|
||||||
|
Diagram.cpp \
|
||||||
Humidity.cpp \
|
Humidity.cpp \
|
||||||
IndoorTemperature.cpp \
|
IndoorTemperature.cpp \
|
||||||
MainContent.cpp \
|
MainContent.cpp \
|
||||||
|
@ -22,6 +23,7 @@ HEADERS += \
|
||||||
Card.h \
|
Card.h \
|
||||||
CircularProgressBar.h \
|
CircularProgressBar.h \
|
||||||
DaytimeSkin.h \
|
DaytimeSkin.h \
|
||||||
|
Diagram.h \
|
||||||
Humidity.h \
|
Humidity.h \
|
||||||
IndoorTemperature.h \
|
IndoorTemperature.h \
|
||||||
MainContent.h \
|
MainContent.h \
|
||||||
|
|
Loading…
Reference in New Issue