仓库
桌面背景切换
桌面背景放弃
个性
- 反对小部件追加
- 反对获取小部件的数量
- 反对获取以后小部件的索引和小局部地址
- 反对查问给定的小部件索引
- 反对设置首页小部件
- 反对小部件移除
- 反对背景图片是否可滑动切换!!!
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QWidget>
#include <QScrollArea>
#include <QHBoxLayout>
#include <QScroller>
#include <QTimer>
#include <QPropertyAnimation>
/* 滑动窗口
* 1. 反对小部件追加
* 2. 反对获取小部件的数量
* 3. 反对获取以后小部件的索引和小局部地址
* 4. 反对查问给定的小部件索引
* 5. 反对设置首页小部件
* 6. 反对小部件移除
* 7. 反对背景图片是否可滑动切换!!!* SliderWidget(QWidget *parent = nullptr, const QString &picture = "");
* 当 picture 传入图片地址时,背景图片将始终放弃不可切换
*/
class SliderWidget : public QWidget
{
Q_OBJECT
public:
SliderWidget(QWidget *parent = nullptr, const QString &picture = "");
~SliderWidget();
int addWidget(QWidget *page);
int count() const;
int currentIndex() const;
QWidget *currentWidget() const;
int indexOf(QWidget *widget) const;
public slots:
void setCurrentIndex(int index);
void setCurrentWidget(QWidget *widget);
void removeWidget(int index);
void removeWidget(QWidget *widget);
protected:
void resizeEvent(QResizeEvent *ev) override;
protected slots:
void onScrollerStateChanged(QScroller::State state);
void onSliderTimerTimeout();
signals:
void currentChanged(int index);
private:
void initUi();
void initCtrl();
void updateIndicator(int index);
private:
QWidget *m_pMainWidget;
QScrollArea *m_pScrollArea;
QHBoxLayout *m_pMainLayout;
QWidget *m_pIndicatorWidget;
QHBoxLayout *m_pIndicatorLayout;
QPropertyAnimation *m_pAnimation;
QTimer *m_pSlidingTimer;
bool m_sliderFlag = false;
int m_sliderPressedValue = 0;
int m_sliderReleaseValue = 0;
int m_curPageIndex = -1;
int m_nextPageIndex = -1;
QString m_background;
};
#endif // MAINWINDOW_H