You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

104 lines
2.2 KiB

6 months ago
/******************************************************************
Copyright © Deng Zhimao Co., Ltd. 1990-2021. All rights reserved.
* @projectName slidepage
* @brief slidepage.h
* @author Deng Zhimao
* @email 1252699831@qq.com
* @net www.openedv.com
* @date 2021-06-09
*******************************************************************/
#ifndef climate_H
#define climate_H
#include <QWidget>
#include <QHBoxLayout>
#include <QMouseEvent>
#include <QScroller>
#include <QScrollBar>
#include <QScrollArea>
#include <QTimer>
#include <QHBoxLayout>
#include <QLabel>
#include <QPropertyAnimation>
#include <QParallelAnimationGroup>
#include <QDebug>
#include <QMouseEvent>
class SlidePage : public QWidget
{
Q_OBJECT
public:
SlidePage(QWidget *parent = nullptr);
~SlidePage();
/* 添加新的页面 */
void addPage(QWidget *);
/* 页面总数 */
int getPageCount();
/* 当前页面 */
int getCurrentPageIndex();
int press_x=0;//摁下的x坐标
int press_y=0;
int relea_x=0;
int relea_y=0;
private:
/* 滚动区域 */
QScrollArea *scrollArea;
/* 主Widget */
QWidget *mainWidget;
/* 水平布局 */
QHBoxLayout *hBoxLayout;
/* 滚屏对象 */
QScroller *scroller;
/* 重设大小 */
void resizeEvent(QResizeEvent *event);
/* 定时器,用于检测用户是否在拖动屏幕 */
QTimer *timer;
/* 当前页数下标 */
int pageIndex;
/* 总页数 */
int pageCount;
/* 拖动标志位 */
bool draggingFlag;
/* 底部Wiget用于逗点分页显示 */
QWidget *bottomWidget;
/* 分点逗点 */
QVector<QLabel *>pageIndicator;
/* 底部分页逗点布局 */
QHBoxLayout *bottomHBoxLayout;
bool eventFilter(QObject *watch, QEvent *evn); //事件监听函数
private slots:
/* 水平滚动条值变化 */
void hScrollBarValueChanged(int);
/* 滚动对象的状态 */
void onStateChanged(QScroller::State);
/* 定时器超时槽函数 */
void onTimerTimeOut();
/* 分页逗点槽函数 */
void onCurrentPageIndexChanged(int);
signals:
void currentPageIndexChanged(int);
};
#endif // climate_H