[Qt] CFlip 翻页功能实现
由于需要给table制作翻页功能,所以写了一个翻页的类。
看上去总体效果感觉还是不错的,哈哈。
#ifndef CFLIP_H
#define CFLIP_H
#include <QWidget>
#include <QPushButton>
#include <QLabel>
#include <QComboBox>
#include <QEvent>
class CFlip : public QWidget
{
Q_OBJECT
public:
CFlip(QWidget *parent = 0);
~CFlip();
int m_iSetPageInfo(int iAllPageNum, int iCurPageNo);
signals:
void sigPageChanged(int iPageNo);
public slots:
void slot_GotoPrePageBtn_clicked();
void slot_FirstPageBtn_clicked();
void slot_PrePageBtn_clicked();
void slot_CurPageBtn_clicked();
void slot_NextPageBtn_clicked();
void slot_LastPageBtn_clicked();
void slot_GotoNextPageBtn_clicked();
protected:
bool eventFilter(QObject *obj, QEvent *event);
private:
QPushButton *m_oGotoPrePageBtn;
QPushButton *m_oFirstPageBtn;
QPushButton *m_oPrePageBtn;
QPushButton *m_oCurPageBtn;
QPushButton *m_oNextPageBtn;
QPushButton *m_oLastPageBtn;
QPushButton *m_oGotoNextPageBtn;
int m_iAllPageNum;
int m_iCurPageNo;
};
#endif // CFLIP_H
#include "flip.h"
#include <QHBoxLayout>
CFlip::CFlip(QWidget *parent)
: QWidget(parent)
{
m_iAllPageNum = 1;
m_iCurPageNo = 1;
m_oGotoPrePageBtn = new QPushButton(this);
m_oFirstPageBtn = new QPushButton(this);
m_oPrePageBtn = new QPushButton(this);
m_oCurPageBtn = new QPushButton(this);
m_oNextPageBtn = new QPushButton(this);
m_oLastPageBtn = new QPushButton(this);
m_oGotoNextPageBtn = new QPushButton(this);
m_oGotoPrePageBtn->setMinimumSize(56, 23);
m_oFirstPageBtn->setMinimumSize(33, 23);
m_oPrePageBtn->setMinimumSize(23, 23);
m_oCurPageBtn->setMinimumSize(23, 23);
m_oNextPageBtn->setMinimumSize(23, 23);
m_oLastPageBtn->setMinimumSize(33, 23);
m_oGotoNextPageBtn->setMinimumSize(56, 23);
m_oGotoPrePageBtn->setMaximumSize(56, 23);
m_oFirstPageBtn->setMaximumSize(33, 23);
m_oPrePageBtn->setMaximumSize(23, 23);
m_oCurPageBtn->setMaximumSize(23, 23);
m_oNextPageBtn->setMaximumSize(23, 23);
m_oLastPageBtn->setMaximumSize(33, 23);
m_oGotoNextPageBtn->setMaximumSize(56, 23);
m_oGotoPrePageBtn->setText(tr("Prev"));
m_oFirstPageBtn->setText(tr("1..."));
m_oPrePageBtn->setText(tr("1"));
m_oCurPageBtn->setText(tr("1"));
m_oNextPageBtn->setText(tr("1"));
m_oLastPageBtn->setText(tr("...1"));
m_oGotoNextPageBtn->setText(tr("Next"));
QHBoxLayout *pHLayout = new QHBoxLayout();
pHLayout->setContentsMargins(1, 1, 1, 1);
pHLayout->addStretch();
pHLayout->addWidget(m_oGotoPrePageBtn);
pHLayout->addWidget(m_oFirstPageBtn);
pHLayout->addWidget(m_oPrePageBtn);
pHLayout->addWidget(m_oCurPageBtn);
pHLayout->addWidget(m_oNextPageBtn);
pHLayout->addWidget(m_oLastPageBtn);
pHLayout->addWidget(m_oGotoNextPageBtn);
this->setLayout(pHLayout);
this->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
this->setMaximumSize(295, 23);
m_oFirstPageBtn->setHidden(true);
m_oPrePageBtn->setHidden(true);
m_oNextPageBtn->setHidden(true);
m_oLastPageBtn->setHidden(true);
this->setStyleSheet(
"QPushButton{border:1px solid #D7E2EE; border-radius:4px; background:#F5F5F5; color:#000; margin:1px;}"
"QPushButton:hover{border:1px solid #C5D3E3}"
);
m_oCurPageBtn->setStyleSheet("background: #006699;");
m_oGotoPrePageBtn->installEventFilter(this);
m_oFirstPageBtn->installEventFilter(this);
m_oPrePageBtn->installEventFilter(this);
m_oCurPageBtn->installEventFilter(this);
m_oNextPageBtn->installEventFilter(this);
m_oLastPageBtn->installEventFilter(this);
m_oGotoNextPageBtn->installEventFilter(this);
connect(m_oGotoPrePageBtn, SIGNAL(clicked()), this, SLOT(slot_GotoPrePageBtn_clicked()));
connect(m_oFirstPageBtn, SIGNAL(clicked()), this, SLOT(slot_FirstPageBtn_clicked()));
connect(m_oPrePageBtn, SIGNAL(clicked()), this, SLOT(slot_PrePageBtn_clicked()));
connect(m_oCurPageBtn, SIGNAL(clicked()), this, SLOT(slot_CurPageBtn_clicked()));
connect(m_oNextPageBtn, SIGNAL(clicked()), this, SLOT(slot_NextPageBtn_clicked()));
connect(m_oLastPageBtn, SIGNAL(clicked()), this, SLOT(slot_LastPageBtn_clicked()));
connect(m_oGotoNextPageBtn, SIGNAL(clicked()), this, SLOT(slot_GotoNextPageBtn_clicked()));
}
CFlip::~CFlip()
{
}
int
CFlip::m_iSetPageInfo(int iAllPageNum, int iCurPageNo)
{
if(iAllPageNum <= 0 || iCurPageNo <= 0 || iAllPageNum<iCurPageNo)
{
return -1;
}
m_iAllPageNum = iAllPageNum;
m_iCurPageNo = iCurPageNo;
m_oGotoPrePageBtn->setHidden(false);
m_oFirstPageBtn->setHidden(false);
m_oPrePageBtn->setHidden(false);
m_oCurPageBtn->setHidden(false);
m_oNextPageBtn->setHidden(false);
m_oLastPageBtn->setHidden(false);
m_oGotoNextPageBtn->setHidden(false);
m_oCurPageBtn->setText(QString::number(iCurPageNo, 10));
if(iCurPageNo==1)
{
m_oFirstPageBtn->setHidden(true);
m_oPrePageBtn->setHidden(true);
}
else if(iCurPageNo==2)
{
m_oFirstPageBtn->setHidden(true);
m_oPrePageBtn->setText(tr("1"));
}
else
{
m_oFirstPageBtn->setText(tr("1..."));
m_oPrePageBtn->setText(QString::number(iCurPageNo-1, 10));
}
if(iCurPageNo == iAllPageNum)
{
m_oNextPageBtn->setHidden(true);
m_oLastPageBtn->setHidden(true);
}
else if(iCurPageNo+1 == iAllPageNum)
{
m_oLastPageBtn->setHidden(true);
m_oNextPageBtn->setText(QString::number(iCurPageNo+1, 10));
}
else
{
m_oNextPageBtn->setText(QString::number(iCurPageNo+1, 10));
m_oLastPageBtn->setText(tr("...")+QString::number(m_iAllPageNum, 10));
}
return 0;
}
void
CFlip::slot_GotoPrePageBtn_clicked()
{
if(m_iSetPageInfo(m_iAllPageNum, m_iCurPageNo-1) == 0)
{
emit sigPageChanged(m_iCurPageNo);
}
}
void
CFlip::slot_FirstPageBtn_clicked()
{
if(m_iSetPageInfo(m_iAllPageNum, 1) == 0)
{
emit sigPageChanged(m_iCurPageNo);
}
}
void
CFlip::slot_PrePageBtn_clicked()
{
if(m_iSetPageInfo(m_iAllPageNum, m_iCurPageNo-1) == 0)
{
emit sigPageChanged(m_iCurPageNo);
}
}
void
CFlip::slot_CurPageBtn_clicked()
{
return;
}
void
CFlip::slot_NextPageBtn_clicked()
{
if(m_iSetPageInfo(m_iAllPageNum, m_iCurPageNo+1) == 0)
{
emit sigPageChanged(m_iCurPageNo);
}
}
void
CFlip::slot_LastPageBtn_clicked()
{
if(m_iSetPageInfo(m_iAllPageNum, m_iAllPageNum) == 0)
{
emit sigPageChanged(m_iCurPageNo);
}
}
void
CFlip::slot_GotoNextPageBtn_clicked()
{
if(m_iSetPageInfo(m_iAllPageNum, m_iCurPageNo+1) == 0)
{
emit sigPageChanged(m_iCurPageNo);
}
}
bool
CFlip::eventFilter(QObject *obj, QEvent *event)
{
QPushButton *pBtn = qobject_cast<QPushButton*>(obj);
if( (m_oGotoPrePageBtn == pBtn) ||
(m_oFirstPageBtn == pBtn) ||
(m_oPrePageBtn == pBtn) ||
(m_oCurPageBtn == pBtn) ||
(m_oNextPageBtn == pBtn) ||
(m_oLastPageBtn == pBtn) ||
(m_oGotoNextPageBtn == pBtn) )
{
if(event->type() == QEvent::Enter)
{
setCursor(Qt::PointingHandCursor);
}
}
return QObject::eventFilter(obj, event);
}
[Qt] CFlip 翻页功能实现的更多相关文章
- jsp实现上一页下一页翻页功能
前段时间一直忙于期末考试和找实习,好久没写博客了. 这段时间做了个小项目,包含了翻页和富文本编辑器Ueditor的两个知识点,Ueditor玩的还不是很深,打算玩深后再写篇博客. 要实现翻页功能,只需 ...
- Web测试——翻页功能测试用例
参考:https://wenku.baidu.com/view/e6462707de80d4d8d15a4f1e.html?rec_flag=default&mark_pay_doc=2&am ...
- Atitit 翻页功能的解决方案与版本历史 v4 r49
Atitit 翻页功能的解决方案与版本历史 v4 r49 1. 版本历史与分支版本,项目版本记录1 1.1. 主干版本历史1 1.2. 分支版本 项目版本记录.1 2. Easyui 的翻页组件2 ...
- Atitit.pagging 翻页功能解决方案专题 与 目录大纲 v3 r44.docx
Atitit.pagging 翻页功能解决方案专题 与 目录大纲 v3 r44.docx 1.1. 翻页的重要意义1 1.2. Dep废弃文档 paip.js翻页分页pageing组件.txt1 ...
- PyQt—QTableWidget实现翻页功能
主要使用QTableWidget中的三个函数实现: verticalScrollBar().setSliderPosition() 设置当前滑动条的位置 verticalScrollBar().max ...
- pyspider示例代码五:实现自动翻页功能
实现自动翻页功能 示例代码一 #!/usr/bin/env python # -*- encoding: utf- -*- # Created on -- :: # Project: v2ex fro ...
- jsp实现翻页功能
jsp实现翻页功能 要实现翻页功能,只需要设置一个pageIndex即可,然后每次加载页面时通过pageIndex去加载数据就行. 那么我们可以设置一个隐藏的input框,用于传递pageIndex给 ...
- jquery.Table实现的翻页功能比较完整漂亮,本想扩展个模版DIV
jquery.dataTable实现的翻页功能比较完整漂亮,本想提取其的翻页部分,再结合模版DIV,bootstrop实现聊天记息的展示. jquery.Table 与table结合的较紧,不能在很下 ...
- Webdriver控制翻页控件,并实现向前向后翻页功能,附上代码,仅供参考,其他类似日期控件的功能可以自己封装
新增输入与选择页面的html源码: <div style="margin-top:-60px;" class="modal-content" id=&qu ...
随机推荐
- JAVA - Comparable接口 与 Comparator接口
Similarities:Both are custom ways to compare two objects.Both return an int describing the relatio ...
- MediaPlayer+SurfaceView 视频播放 示例
SurfaceView的原理 SurfaceView在视频播放中起到显示画面的作用,而视频的播放主要通过MediaPlayer来控制. SurfaceView 允许我们 ...
- 使用多线程完成Socket
public class Service { //服务器 public static void main(String[] args) { ServerSocket serverSocket=null ...
- apache也可以做负载均衡,跟nignx的区别是什么?
后续更新中.. 参考 http://zhumeng8337797.blog.163.com/blog/static/100768914201242211633248/ 比较 http://zhan.r ...
- goldengate单向复制文档
1:实验环境 2:实验步骤 --下面的2.1-2.2步骤,都需要在源端和目标端分别执行. 2.1:准备工作 2.1.1 建表空间 create tablespace ogg datafile '/u0 ...
- Xcode7.0设置网络白名单
- web项目环境搭建(1):建立一个maven项目
一.maven简介以及常用概念 1.Maven是一个项目管理和整合的工具.Maven为开发者提供了一套完整的构建生命周期框架.开发团队基本不用花多少时间就能自动完成工程的基础构建配置,因为Maven使 ...
- 武汉科技大学ACM:1004: Lake and Island
Problem Description 北园孩子的专属福利来啦~学校从北区宿舍到湖心岛修建了一条通道让北园的同学们可以上去一(kuang)同(xiu)玩(en)耍(ai),这一天,IcY向ahm001 ...
- 武汉科技大学ACM :1006: A+B for Input-Output Practice (VI)
Problem Description Your task is to calculate the sum of some integers. Input Input contains multipl ...
- mahout学习-1
一. 安装软件 需要安装如下文件: java, Eclipse, Maven,Hadoop,mahout 二. 推荐系统简介 每天,我们都会对一些事物表达自己的看法,喜欢,或不喜欢,或不在乎.这些都在 ...