Started the code for the Profile Plotting

This small patch adds a new class - ProfileGraphicsView
it's a QGraphicsView based class that will holds all
graphics-items for the plotting.

The setup is simple, just call ui->ListView->plot( dive )  ( that's
already a ProfileGraphicsView and magic will happen.

Since Im using a QGraphicsView , the size of the canvas doesn't
matter and I'm fixing it at 0,0,100,100. when a resize is done,
the resizeEvent will be called, fitting the scene's rectangle on
the view.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
This commit is contained in:
Tomaz Canabrava 2013-05-04 16:12:43 -03:00
parent fcd6903621
commit 243016633d
5 changed files with 54 additions and 2 deletions

View file

@ -39,6 +39,7 @@ HEADERS = \
qt-ui/plotareascene.h \
qt-ui/starwidget.h \
qt-ui/modeldelegates.h \
qt-ui/profilegraphics.h \
SOURCES = \
@ -67,6 +68,7 @@ SOURCES = \
qt-ui/plotareascene.cpp \
qt-ui/starwidget.cpp \
qt-ui/modeldelegates.cpp \
qt-ui/profilegraphics.cpp \
$(RESFILE)

View file

@ -94,6 +94,8 @@ void MainWindow::dive_selection_changed(const QItemSelection& newSelection, cons
continue;
select_dive(get_divenr(d));
}
ui->ProfileWidget->plot( get_dive(selected_dive) );
}
void MainWindow::on_actionSave_triggered()

View file

@ -25,7 +25,7 @@
<enum>Qt::Horizontal</enum>
</property>
<widget class="MainTab" name="InfoWidget" native="true"/>
<widget class="QGraphicsView" name="ProfileWidget"/>
<widget class="ProfileGraphicsView" name="ProfileWidget"/>
</widget>
<widget class="DiveListView" name="ListWidget">
<property name="styleSheet">
@ -88,7 +88,7 @@
<x>0</x>
<y>0</y>
<width>763</width>
<height>19</height>
<height>25</height>
</rect>
</property>
<widget class="QMenu" name="menuFile">
@ -339,6 +339,11 @@
<extends>QTreeView</extends>
<header>divelistview.h</header>
</customwidget>
<customwidget>
<class>ProfileGraphicsView</class>
<extends>QGraphicsView</extends>
<header>profilegraphics.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>

26
qt-ui/profilegraphics.cpp Normal file
View file

@ -0,0 +1,26 @@
#include "profilegraphics.h"
#include <QGraphicsScene>
#include <QResizeEvent>
#include <QDebug>
ProfileGraphicsView::ProfileGraphicsView(QWidget* parent) : QGraphicsView(parent)
{
setScene(new QGraphicsScene());
scene()->setSceneRect(0,0,100,100);
}
void ProfileGraphicsView::plot(struct dive *d)
{
qDebug() << "Start the plotting of the dive here.";
}
void ProfileGraphicsView::resizeEvent(QResizeEvent *event)
{
// Fits the scene's rectangle on the view.
// I can pass some parameters to this -
// like Qt::IgnoreAspectRatio or Qt::KeepAspectRatio
QRectF r = scene()->sceneRect();
fitInView ( r.x() - 2, r.y() -2, r.width() + 4, r.height() + 4); // do a little bit of spacing;
}

17
qt-ui/profilegraphics.h Normal file
View file

@ -0,0 +1,17 @@
#ifndef PROFILEGRAPHICS_H
#define PROFILEGRAPHICS_H
#include <QGraphicsView>
class ProfileGraphicsView : public QGraphicsView {
Q_OBJECT
public:
ProfileGraphicsView(QWidget* parent = 0);
void plot(struct dive *d);
protected:
void resizeEvent(QResizeEvent *event);
};
#endif