File DataAnchor.hpp¶
File List > annotations > DataAnchor.hpp
Go to the documentation of this file
//
// SPDX-FileCopyrightText: 2026 Michal Grabarczyk
// SPDX-License-Identifier: GPL-3.0-only WITH Universal-FOSS-exception-1.0
//
// This file is also available under a separate commercial license.
// See COMMERCIAL-LICENSING.md for contact information.
//
#pragma once
#include "QAccelPlot/axis/Axis.hpp"
#include <QPointer>
#include <QQuickItem>
#include <QRectF>
#if __has_include(<QtQmlIntegration/qqmlintegration.h>)
#include <QtQmlIntegration/qqmlintegration.h>
#else
#include <QtQml/qqmlregistration.h>
#endif
namespace QAccelPlot {
class DataAnchor : public QQuickItem {
Q_OBJECT
QML_NAMED_ELEMENT(DataAnchor)
Q_PROPERTY(Axis* xAxis READ xAxis WRITE setXAxis NOTIFY xAxisChanged)
Q_PROPERTY(Axis* yAxis READ yAxis WRITE setYAxis NOTIFY yAxisChanged)
Q_PROPERTY(QRectF plotRect READ plotRect WRITE setPlotRect NOTIFY plotRectChanged)
Q_PROPERTY(qreal dataX1 READ dataX1 WRITE setDataX1 NOTIFY dataX1Changed)
Q_PROPERTY(qreal dataY1 READ dataY1 WRITE setDataY1 NOTIFY dataY1Changed)
Q_PROPERTY(qreal dataX2 READ dataX2 WRITE setDataX2 NOTIFY dataX2Changed)
Q_PROPERTY(qreal dataY2 READ dataY2 WRITE setDataY2 NOTIFY dataY2Changed)
Q_PROPERTY(qreal hoverThreshold READ hoverThreshold WRITE setHoverThreshold NOTIFY hoverThresholdChanged)
public:
explicit DataAnchor(QQuickItem* parent = nullptr);
Axis* xAxis() const;
void setXAxis(Axis* axis);
Axis* yAxis() const;
void setYAxis(Axis* axis);
QRectF plotRect() const;
void setPlotRect(const QRectF& rect);
qreal dataX1() const;
void setDataX1(qreal value);
qreal dataY1() const;
void setDataY1(qreal value);
qreal dataX2() const;
void setDataX2(qreal value);
qreal dataY2() const;
void setDataY2(qreal value);
qreal hoverThreshold() const;
void setHoverThreshold(qreal threshold);
bool contains(const QPointF& point) const override;
signals:
void xAxisChanged();
void yAxisChanged();
void plotRectChanged();
void dataX1Changed();
void dataY1Changed();
void dataX2Changed();
void dataY2Changed();
void hoverThresholdChanged();
private:
void updateGeometry();
QPointer<Axis> xAxis_;
QPointer<Axis> yAxis_;
QRectF plotRect_;
qreal dataX1_{0.0};
qreal dataY1_{0.0};
qreal dataX2_{0.0};
qreal dataY2_{0.0};
qreal hoverThreshold_{8.0};
};
} // namespace QAccelPlot