##// END OF EJS Templates
First draft of project structure
Jani Honkonen -
r1:e2b454419c47
parent child
Show More
@@ -0,0 +1,7
1 TEMPLATE = subdirs
2 SUBDIRS += widget qmlplugin
3
4 # install feature file
5 feature.path = $$[QT_INSTALL_DATA]/mkspecs/features
6 feature.files = $$PWD/features/charts.prf
7 INSTALLS += feature
@@ -0,0 +1,5
1 INCLUDEPATH += $$[QT_INSTALL_HEADERS]/Charts
2
3 contains(CHARTS, widget) {
4 LIBS += -lChartWidget
5 }
@@ -0,0 +1,27
1 #include "declarativechart.h"
2 #include <QPainter>
3
4 #if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
5 DeclarativeChart::DeclarativeChart(QDeclarativeItem *parent)
6 : QDeclarativeItem(parent)
7 {
8 // need to disable this flag to draw inside a QDeclarativeItem
9 setFlag(QGraphicsItem::ItemHasNoContents, false);
10 }
11 #else
12 DeclarativeChart::DeclarativeChart(QQuickItem *parent)
13 : QQuickPaintedItem(parent)
14 {
15
16 }
17 #endif
18
19 #if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
20 void DeclarativeChart::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
21 #else
22 void DeclarativeChart::paint(QPainter *painter)
23 #endif
24 {
25 drawChart(painter, boundingRect());
26 }
27
@@ -0,0 +1,37
1 #ifndef DECLARATIVECHART_H
2 #define DECLARATIVECHART_H
3
4 #include <QtCore/QtGlobal>
5 #if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
6 #include <QDeclarativeItem>
7 #else
8 #include <QtQuick/QQuickPaintedItem>
9 #endif
10 #include <QColor>
11 #include "../src/chart.h"
12
13 #if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
14 class DeclarativeChart : public QDeclarativeItem, public Chart
15 #else
16 class DeclarativeChart : public QQuickPaintedItem, public Chart
17 #endif
18 {
19 Q_OBJECT
20 Q_PROPERTY(QColor color READ color WRITE setColor)
21
22 public:
23 #if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
24 DeclarativeChart(QDeclarativeItem *parent = 0);
25 #else
26 DeclarativeChart(QQuickItem *parent = 0);
27 #endif
28
29 #if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
30 void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
31 #else
32 void paint(QPainter *painter);
33 #endif
34 };
35
36
37 #endif // DECLARATIVECHART_H
@@ -0,0 +1,22
1 #include <QtDeclarative/qdeclarativeextensionplugin.h>
2 #include <QtDeclarative/qdeclarative.h>
3 #include "declarativechart.h"
4
5 QT_BEGIN_NAMESPACE
6
7 class QmlChartPlugin : public QDeclarativeExtensionPlugin
8 {
9 Q_OBJECT
10 public:
11 virtual void registerTypes(const char *uri)
12 {
13 Q_ASSERT(QLatin1String(uri) == QLatin1String("com.digia.charts"));
14 qmlRegisterType<DeclarativeChart>(uri, 1, 0, "Chart");
15 }
16 };
17
18 QT_END_NAMESPACE
19
20 #include "plugin.moc"
21
22 Q_EXPORT_PLUGIN2(qmlchartplugin, QT_PREPEND_NAMESPACE(QmlChartPlugin));
@@ -0,0 +1,29
1 import QtQuick 2.0
2
3 Canvas {
4 id: canvas
5 width: 200
6 height: 200
7 smooth:true
8 renderTarget:Canvas.Image
9 renderInThread:false
10
11 onWidthChanged: requestPaint()
12 onHeightChanged: requestPaint()
13
14 onPaint: {
15 var ctx = canvas.getContext('2d')
16 ctx.reset()
17 ctx.clearRect(0, 0, canvas.width, canvas.height)
18 ctx.strokeStyle = "red"
19 ctx.lineWidth = 1
20 ctx.moveTo(10, 10)
21 ctx.lineTo(10, canvas.height-10)
22 ctx.lineTo(canvas.width-10, canvas.height-10)
23 ctx.text("Axis x", canvas.width / 2, canvas.height)
24 ctx.text("Insert chart here", canvas.width / 2, canvas.height / 2)
25 ctx.stroke();
26 }
27 }
28
29
@@ -0,0 +1,16
1 import QmlProject 1.0
2
3 Project {
4 /* Include .qml, .js, and image files from current directory and subdirectories */
5 QmlFiles {
6 directory: "."
7 }
8 JavaScriptFiles {
9 directory: "."
10 }
11 ImageFiles {
12 directory: "."
13 }
14 /* List of plugin directories passed to QML runtime */
15 // importPaths: [ " ../exampleplugin " ]
16 }
@@ -0,0 +1,1
1 plugin qmlchartplugin
@@ -0,0 +1,26
1 TEMPLATE = lib
2 TARGET = qmlchartplugin
3
4 CONFIG += qt plugin
5 QT += declarative
6
7 OBJECTS_DIR = tmp
8 MOC_DIR = tmp
9
10 SOURCES += \
11 plugin.cpp \
12 declarativechart.cpp
13 HEADERS += \
14 declarativechart.h
15 include(../src/chart.pri)
16
17 TARGETPATH = com/digia/charts
18
19 #DESTDIR = $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
20 target.path = $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
21
22 qmldir.files += $$PWD/qmldir
23 qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
24
25 INSTALLS += target qmldir
26
@@ -0,0 +1,46
1 #include "chart.h"
2
3 Chart::Chart()
4 {
5
6 }
7
8 Chart::~Chart()
9 {
10
11 }
12
13 QColor Chart::color() const
14 {
15 return m_color;
16 }
17
18 void Chart::setColor(const QColor &color)
19 {
20 m_color = color;
21 }
22
23 void Chart::drawChart(QPainter *painter, const QRectF& drawRect)
24 {
25 QRectF r = drawRect;
26 r.adjust(10, 10, -10, -10);
27
28 QPen pen(m_color, 2);
29 pen.setCapStyle(Qt::RoundCap);
30 painter->setPen(pen);
31 painter->setRenderHints(QPainter::Antialiasing, true);
32 painter->drawLine(r.topLeft(), r.bottomLeft());
33 painter->drawLine(r.bottomLeft(), r.bottomRight());
34
35 painter->drawText(drawRect, "Axis x", QTextOption(Qt::AlignBottom | Qt::AlignHCenter));
36 QTransform transform;
37 transform.translate(drawRect.width(), 0); // works badly if drawrect width != height :)
38 transform.rotate(90);
39 painter->setTransform(transform);
40 painter->drawText(drawRect, "Axis y", QTextOption(Qt::AlignBottom | Qt::AlignHCenter));
41 painter->resetTransform();
42
43 painter->drawText(drawRect, QT_VERSION_STR, QTextOption(Qt::AlignTop | Qt::AlignRight));
44 painter->drawText(drawRect, "Insert chart here", QTextOption(Qt::AlignCenter));
45
46 }
@@ -0,0 +1,24
1 #ifndef CHART_H
2 #define CHART_H
3 #include <QColor>
4 #include <QPainter>
5 #include <QRect>
6
7 class QPainter;
8
9 class Chart
10 {
11 public:
12 Chart();
13 virtual ~Chart();
14
15 QColor color() const;
16 void setColor(const QColor &color);
17
18 void drawChart(QPainter *painter, const QRectF& drawRect);
19
20 private:
21 QColor m_color;
22 };
23
24 #endif
@@ -0,0 +1,2
1 HEADERS += $$PWD/chart.h
2 SOURCES += $$PWD/chart.cpp
@@ -0,0 +1,16
1 TARGET = chartwidgettest
2 TEMPLATE = app
3
4 QT += core gui
5 contains(QT_MAJOR_VERSION, 5) {
6 QT += widgets
7 }
8
9 CONFIG += charts
10 CHARTS += widget
11
12 OBJECTS_DIR = tmp
13 MOC_DIR = tmp
14
15 SOURCES += main.cpp
16
@@ -0,0 +1,19
1 #include <QtCore/QtGlobal>
2 #if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
3 #include <QApplication>
4 #else
5 #include <QtWidgets/QApplication>
6 #endif
7 #include <chartwidget.h>
8
9 int main(int argc, char *argv[])
10 {
11 QApplication a(argc, argv);
12
13 ChartWidget w;
14 w.resize(QSize(200,200));
15 w.setColor(Qt::red);
16 w.show();
17
18 return a.exec();
19 }
@@ -0,0 +1,11
1 //import QtQuick 1.1
2 import QtQuick 2.0
3 import com.digia.charts 1.0
4
5 Chart {
6 width: 200
7 height: 200
8 color: "red"
9 }
10
11
@@ -0,0 +1,38
1 #include "chartwidget.h"
2 #include "../src/chart.h"
3 #include <QPainter>
4
5 class ChartWidgetPrivate : public Chart
6 {
7 public:
8 //Q_DECLARE_PUBLIC(ChartWidget)
9 ChartWidgetPrivate() {}
10 };
11
12 ChartWidget::ChartWidget(QWidget *parent)
13 : QWidget(parent)
14 {
15 d_ptr = new ChartWidgetPrivate();
16 }
17
18 ChartWidget::~ChartWidget()
19 {
20 delete d_ptr;
21 d_ptr = 0;
22 }
23
24 QColor ChartWidget::color() const
25 {
26 return d_ptr->color();
27 }
28
29 void ChartWidget::setColor(const QColor &color)
30 {
31 d_ptr->setColor(color);
32 }
33
34 void ChartWidget::paintEvent(QPaintEvent *)
35 {
36 QPainter painter(this);
37 d_ptr->drawChart(&painter, rect());
38 }
@@ -0,0 +1,40
1 #ifndef CHARTWIDGET_H
2 #define CHARTWIDGET_H
3
4 #include <QtCore/QtGlobal>
5 #if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
6 #include <QWidget>
7 #else
8 #include <QtWidgets/QWidget>
9 #endif
10
11 #if defined(CHARTWIDGET_LIBRARY)
12 # define CHARTWIDGET_EXPORT Q_DECL_EXPORT
13 #else
14 # define CHARTWIDGET_EXPORT Q_DECL_IMPORT
15 #endif
16
17 class ChartWidgetPrivate;
18
19 class CHARTWIDGET_EXPORT ChartWidget : public QWidget
20 {
21 Q_OBJECT
22 Q_PROPERTY(QColor color READ color WRITE setColor)
23
24 public:
25 explicit ChartWidget(QWidget *parent = 0);
26 ~ChartWidget();
27
28 QColor color() const;
29 void setColor(const QColor &color);
30
31 protected:
32 virtual void paintEvent(QPaintEvent *);
33
34 private:
35 Q_DISABLE_COPY(ChartWidget)
36 Q_DECLARE_PRIVATE(ChartWidget)
37 ChartWidgetPrivate* d_ptr;
38 };
39
40 #endif
@@ -0,0 +1,25
1 TARGET = ChartWidget
2 TEMPLATE = lib
3
4 QT += core gui
5 contains(QT_MAJOR_VERSION, 5) {
6 QT += widgets
7 }
8
9 SOURCES += \
10 chartwidget.cpp
11 HEADERS += \
12 chartwidget.h
13 include(../src/chart.pri)
14
15 OBJECTS_DIR = tmp
16 MOC_DIR = tmp
17
18 DEFINES += CHARTWIDGET_LIBRARY
19
20 public_headers.path = $$[QT_INSTALL_HEADERS]/Charts
21 public_headers.files = chartwidget.h
22
23 target.path=$$[QT_INSTALL_LIBS]
24
25 INSTALLS += target public_headers
General Comments 0
You need to be logged in to leave comments. Login now