65 lines
1.7 KiB
C++
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
|