Loading...
Searching...
No Matches
QGraphicsCombo.hpp
1#pragma once
2#include <score/graphics/widgets/Constants.hpp>
3
4#include <QGraphicsItem>
5#include <QObject>
6#include <QStringList>
7
8#include <score_lib_base_export.h>
9
10#include <array>
11#include <verdigris>
12
13namespace score
14{
15class SCORE_LIB_BASE_EXPORT QGraphicsCombo final
16 : public QObject
17 , public QGraphicsItem
18{
19 W_OBJECT(QGraphicsCombo)
20 SCORE_GRAPHICS_ITEM_TYPE(30)
21 friend struct DefaultComboImpl;
22 QRectF m_rect{defaultSliderSize};
23
24public:
25 QStringList array;
26
27private:
28 int m_value{};
29 bool m_grab{};
30 bool m_editable{};
31
32public:
33 template <std::size_t N>
34 QGraphicsCombo(const std::array<const char*, N>& arr, QGraphicsItem* parent)
35 : QGraphicsCombo{parent}
36 {
37 array.reserve(N);
38 for(auto str : arr)
39 array.push_back(str);
40
41 init();
42 }
43
44 QGraphicsCombo(QStringList arr, QGraphicsItem* parent)
45 : QGraphicsCombo{parent}
46 {
47 array = std::move(arr);
48 init();
49 }
50
51 explicit QGraphicsCombo(QGraphicsItem* parent);
52
53 void init();
54 void setRect(const QRectF& r);
55 void setValue(int v);
56 int value() const;
57
59 void setEditable(bool b);
60 bool editable() const noexcept { return m_editable; }
61
63 void openEditor(QPointF scenePos);
64
65 bool moving = false;
66
67 void sliderMoved() E_SIGNAL(SCORE_LIB_BASE_EXPORT, sliderMoved)
68 void sliderReleased() E_SIGNAL(SCORE_LIB_BASE_EXPORT, sliderReleased)
69
70
71 void valueEdited(const QString& text) E_SIGNAL(SCORE_LIB_BASE_EXPORT, valueEdited, text)
72
73 void contextMenuEvent(QGraphicsSceneContextMenuEvent* event) override;
74 void mousePressEvent(QGraphicsSceneMouseEvent* event) override;
75 void mouseMoveEvent(QGraphicsSceneMouseEvent* event) override;
76 void mouseReleaseEvent(QGraphicsSceneMouseEvent* event) override;
77 bool sceneEvent(QEvent* event) override;
78 QRectF boundingRect() const override;
79 void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
80 override;
81};
82}
Definition QGraphicsCombo.hpp:18
Base toolkit upon which the software is built.
Definition Application.cpp:113
Definition QGraphicsCombo.cpp:28