Files
GUI/src/components/SlidePickerBox.h
2022-04-22 17:16:45 +08:00

65 lines
1.7 KiB
C++

//
// Created by Krad on 2021/11/24.
//
#ifndef GUI_SLIDEPICKERBOX_H
#define GUI_SLIDEPICKERBOX_H
#include <QWidget>
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<Qt::AlignmentFlag> 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<QLabel*> lbls;
QStringList items;
QStringList disableItems;
QFlags<Qt::AlignmentFlag> defaultAlign= Qt::AlignCenter;
void adjustPositon() const;
};
#endif //GUI_SLIDEPICKERBOX_H