由于需要给table制作翻页功能,所以写了一个翻页的类。

看上去总体效果感觉还是不错的,哈哈。

//flip.h

#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

//flip.cpp

#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 翻页功能实现的更多相关文章

  1. jsp实现上一页下一页翻页功能

    前段时间一直忙于期末考试和找实习,好久没写博客了. 这段时间做了个小项目,包含了翻页和富文本编辑器Ueditor的两个知识点,Ueditor玩的还不是很深,打算玩深后再写篇博客. 要实现翻页功能,只需 ...

  2. Web测试——翻页功能测试用例

    参考:https://wenku.baidu.com/view/e6462707de80d4d8d15a4f1e.html?rec_flag=default&mark_pay_doc=2&am ...

  3. Atitit 翻页功能的解决方案与版本历史 v4 r49

    Atitit 翻页功能的解决方案与版本历史 v4 r49 1. 版本历史与分支版本,项目版本记录1 1.1. 主干版本历史1 1.2. 分支版本  项目版本记录.1 2. Easyui 的翻页组件2 ...

  4. Atitit.pagging  翻页功能解决方案专题 与 目录大纲 v3 r44.docx

    Atitit.pagging  翻页功能解决方案专题 与 目录大纲 v3 r44.docx 1.1. 翻页的重要意义1 1.2. Dep废弃文档   paip.js翻页分页pageing组件.txt1 ...

  5. PyQt—QTableWidget实现翻页功能

    主要使用QTableWidget中的三个函数实现: verticalScrollBar().setSliderPosition() 设置当前滑动条的位置 verticalScrollBar().max ...

  6. pyspider示例代码五:实现自动翻页功能

    实现自动翻页功能 示例代码一 #!/usr/bin/env python # -*- encoding: utf- -*- # Created on -- :: # Project: v2ex fro ...

  7. jsp实现翻页功能

    jsp实现翻页功能 要实现翻页功能,只需要设置一个pageIndex即可,然后每次加载页面时通过pageIndex去加载数据就行. 那么我们可以设置一个隐藏的input框,用于传递pageIndex给 ...

  8. jquery.Table实现的翻页功能比较完整漂亮,本想扩展个模版DIV

    jquery.dataTable实现的翻页功能比较完整漂亮,本想提取其的翻页部分,再结合模版DIV,bootstrop实现聊天记息的展示. jquery.Table 与table结合的较紧,不能在很下 ...

  9. Webdriver控制翻页控件,并实现向前向后翻页功能,附上代码,仅供参考,其他类似日期控件的功能可以自己封装

    新增输入与选择页面的html源码: <div style="margin-top:-60px;" class="modal-content" id=&qu ...

随机推荐

  1. HDU -2674 N!Again(小技巧)

    这道题有个小技巧,就是既然是n!,那么对2009求余,只要大于2009!,那么一定是0,在仔细想想会发现,根本到不了2009,只要到2009的最大质因数就行了,为什么呢?因为最大质因数是最大的一个不能 ...

  2. Wcf+EF框架搭建实例

    一.最近在使用Wcf创建数据服务,但是在和EF框架搭建数据访问时遇到了许多问题 下面是目前整理的基本框架代码,经供参考使用,源代码地址:http://git.oschina.net/tiama3798 ...

  3. WPF自定义Main函数

    第一步:在app.xaml.cs里加入以下代码: [STAThread] public static void Main(string[] args) { App app = new App(); a ...

  4. bootstrap兼容IE8的一些注意

    准备 bootstrap 3.3.5 jQuery 1.12.0 注意 支持html5 需要引入html5.js 支持placeholder 需要引入placeholder.js ie8 不支持 fo ...

  5. [转]链接分析算法之:主题敏感PageRank

    原文引自:http://blog.csdn.net/hguisu/article/details/8005192,感谢 前面的讨论提到.PageRank忽略了主题相关性,导致结果的相关性和主题性降低, ...

  6. javascript访问级别

    JavaScript中没有官方的访问级别语法,JavaScript没有类似于Java语言智能搞得private或protected这样的访问级别关键字,默认情况下,,对象中所有的成员都是公有和可访问的 ...

  7. java学习笔记 (9) —— Struts2 国际化

    1.Test.java package com.i18n; import java.util.Locale; public class Test1 { public static void main( ...

  8. 【转载】Express、Koa、Hapi框架对比

    中文翻译:http://ourjs.com/detail/5490db1c8a34fa320400000e 英文原文:https://www.airpair.com/node.js/posts/nod ...

  9. LRU缓存算法 - C++版

    LRU是Least Recently Used的缩写,意思是最近最少使用,它是一种Cache替换算法. 实现思路: hashtable + 双向链表 时间复杂度: 插入,查找,删除:O(1) 空间使用 ...

  10. 使用hexo创建github博客

    前言 前面说过,之前用wordpress辛辛苦苦搭建的博客,因为服务器和域名的问题挂掉了.后来发现github也能够搭建自己的博客,不需要去关心主机域名的问题,而且还能使用Markdown来写博客,就 ...