53 lines
983 B
C++
53 lines
983 B
C++
#include <QWidget>
|
|
|
|
class QPropertyAnimation;
|
|
class AStackWidget : public QWidget
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
AStackWidget(QWidget *parent);
|
|
~AStackWidget();
|
|
|
|
signals:
|
|
void currentChanged(int index);
|
|
void widgetRemoved(int index);
|
|
|
|
public:
|
|
int count() const;
|
|
int currentIndex() const;
|
|
int addWidget(QWidget *widget);
|
|
int indexOf(QWidget *widget) const;
|
|
int insertWidget(int index, QWidget *widget);
|
|
|
|
QWidget *currentWidget() const;
|
|
QWidget *widget(int index) const;
|
|
|
|
void removeWidget(QWidget *widget);
|
|
void setDuration(int duration);
|
|
|
|
public slots:
|
|
void setCurrentIndex(int index);
|
|
void setCurrentWidget(QWidget *widget);
|
|
|
|
private slots:
|
|
void onValueChanged(const QVariant &);
|
|
void onMoveFinished();
|
|
|
|
private:
|
|
void moveAnimationStart();
|
|
void setWidgetsVisible();
|
|
|
|
protected:
|
|
void resizeEvent(QResizeEvent *event);
|
|
|
|
private:
|
|
int m_offset;
|
|
int m_curIndex;
|
|
int m_lastIndex;
|
|
|
|
int m_duration;
|
|
QPropertyAnimation *m_moveAnimation;
|
|
QList<QWidget *> m_widgetLst;
|
|
};
|