// // Created by Krad on 2021/11/24. // #ifndef GUI_SLIDEPICKERBOX_H #define GUI_SLIDEPICKERBOX_H #include class QLabel; class SlidePickerBox:public QWidget { Q_OBJECT public: explicit SlidePickerBox(QWidget *parent = nullptr); QString getSelectedValue(); void setItems(const QStringList& itemsList); void addItem(QString& item) { this->items.append(item); } void disableItem(const QString& val); void enableItem(const QString& val); int getItemsCount(){ return items.size(); } void setSelectedValue(const QString& val); void resizeLabelWidth(); void setDefaultAlignment(QFlags align){ this->defaultAlign = align; } signals: void valueChanged(QString & value); protected: bool isDragging; // QPropertyAnimation *homingAni; void mousePressEvent(QMouseEvent * ev) override ; void mouseMoveEvent(QMouseEvent * ev) override ; void mouseReleaseEvent(QMouseEvent * ev) override ; void paintEvent(QPaintEvent * ev) override ; void paintText(QString txt,int x, int y, const QColor& color); void paintText(QString txt,int x, int y){ paintText(txt, x, y, QColor(0,0,0)); } void setCurrentLabel(QLabel* label); QLabel * getEnabledLastLabel(); QLabel * getEnabledFirstLabel(); void hideLabel(QLabel* label); void rearrangeLabels(); private: int o_x=0,o_y=10; int selectedIndex = -1; QLabel* selectedLbl = nullptr; QLabel* prevLbl = nullptr; QLabel* nextLbl = nullptr; QList lbls; QStringList items; QStringList disableItems; QFlags defaultAlign= Qt::AlignCenter; void adjustPositon() const; }; #endif //GUI_SLIDEPICKERBOX_H