Skip to content
Extraits de code Groupes Projets
Valider 29959525 rédigé par Elliu's avatar Elliu
Parcourir les fichiers

Make timingBar draggable on X axis only

parent 04e0f555
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -43,6 +43,8 @@ set(PROJECT_SOURCES
audioVisualizer.cpp
timer.h
timer.cpp
timingBar.h
timingBar.cpp
)
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
......
......@@ -20,20 +20,17 @@ void Timer::mousePressEvent(QMouseEvent* event){
QPoint pos = event->pos();
pos.rx() += horizontalScrollBar()->value();
QGraphicsItem* got;
if ((got = scene->itemAt(pos, QTransform())) != nullptr && got != bg){
got->hide();
return;
}
TimingBar* bar;
int x = event->pos().x() + horizontalScrollBar()->value();
scene->addLine(QLine(x, 0, x, img.height() - TO_ADD_TO_IMAGE_HEIGHT), startColour)->setFlags(QGraphicsItem::ItemIsMovable/* | QGraphicsItem::ItemSendsGeometryChanges*/);
fprintf(stderr, "BEFORE IF\n");
if ((got = scene->itemAt(pos, QTransform())) != nullptr && got != bg){
//got->hide();
goto pass;
}
fprintf(stderr, "AFTER IF\n");
bar = new TimingBar(QLine(x, 0, x, img.height() - TO_ADD_TO_IMAGE_HEIGHT), event->button() == Qt::LeftButton ? startColour : endColour);
scene->addItem(bar);
/*
void Timer::paintEvent(QPaintEvent *event){
fprintf(stderr, "IN PAINT EVENT\n");
painter.setPen(Qt::NoPen);
QVectorIterator<QLine> it(lines);
while (it.hasNext())
painter.drawLine(it.next());
pass:
QGraphicsView::mousePressEvent(event);
}
*/
......@@ -13,6 +13,7 @@
#include <QGraphicsView>
#include <QVector>
#include <QGraphicsLineItem>
#include "timingBar.h"
#define TO_ADD_TO_IMAGE_HEIGHT 2
......@@ -35,7 +36,6 @@ public:
protected:
void mousePressEvent(QMouseEvent* event);
//void paintEvent(QPaintEvent *);
public slots:
};
......
#include "timingBar.h"
TimingBar::TimingBar(QWidget *parent)
: QLabel(parent)
#define BAR_DEMI_WIDTH 2
#define BAR_WIDTH 4
TimingBar::TimingBar(QLine line, QColor color, QWidget *parent)
: QGraphicsLineItem(line)
{
setPen(QPen(QBrush(color), BAR_WIDTH, Qt::SolidLine, Qt::FlatCap));
setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemSendsGeometryChanges);
setAcceptHoverEvents(true);
setCursor(Qt::PointingHandCursor);
}
TimingBar::~TimingBar()
{
}
/*
void TimingBar::mousePressEvent(QGraphicsSceneMouseEvent* event){
fprintf(stderr, "CLICKED\n");
}
*/
QVariant TimingBar::itemChange(GraphicsItemChange change, const QVariant& value){
if (change == ItemPositionChange) {
return QPointF(value.toPointF().x(), 0);
}
return QGraphicsLineItem::itemChange(change, value);
}
/*
void TimingBar::hoverEnterEvent (QGraphicsSceneHoverEvent *event){
QGraphicsItem::hoverEnterEvent(event);
QApplication::setOverrideCursor(Qt::PointingHandCursor);
}
void TimingBar::hoverLeaveEvent (QGraphicsSceneHoverEvent *event){
QGraphicsItem::hoverLeaveEvent(event);
QApplication::setOverrideCursor(Qt::ArrowCursor);
}
*/
......@@ -8,16 +8,25 @@
#include <QScrollBar>
#include <QMessageBox>
#include <QMouseEvent>
#include <QGraphicsItem>
#include <QGraphicsLineItem>
#include <QPen>
#include <QGraphicsSceneMouseEvent>
#include <QApplication>
class TimingBar : public QLabel
class TimingBar : public QGraphicsLineItem
{
Q_OBJECT
public:
TimingBar(QWidget *parent = nullptr);
TimingBar(QLine, QColor, QWidget *parent = nullptr);
~TimingBar();
public slots:
protected:
//void mousePressEvent(QGraphicsSceneMouseEvent*);
QVariant itemChange(GraphicsItemChange, const QVariant&) override;
/*
void hoverEnterEvent (QGraphicsSceneHoverEvent*) override;
void hoverLeaveEvent (QGraphicsSceneHoverEvent*) override;
*/
};
#endif
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter