QT怎么制作出翻页效果

monicangl 2011-08-23 05:35:14
想做出那种很炫的效果,点击一个新的页面时,刷的展开,或者旧的页面刷的翻过去隐藏掉。

各位兄弟姐妹有没有什么idea,谢谢啦。。。
...全文
1316 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Qyee16 2014-03-06
  • 打赏
  • 举报
回复
引用 1 楼 yiyaaixuexi 的回复:


void folding::paintEvent(QPaintEvent *event)
{

    QPainter painter(this);

    painter.fillRect(rect(), Qt::black);
    painter.setRenderHint(QPainter::SmoothPixmapTransform, true);
    painter.setRenderHint(QPainter::Antialiasing, true);

    painter.drawPixmap(0, 0, m_pixmap);

    int index = m_animator.currentFrame();

    if(index>=99)
        return;


    if(direct==Left)
    {
        QPoint mouse_pos=QPoint(800-index*8,600-60*index/10);

        QPainterPath path1;
        QPainterPath path2;
        QPainterPath path3;

        /* Draw region 1 */
        painter.save ();
        path1.moveTo(0,600);
        path1.lineTo(mouse_pos.x(), 600);
        path1.lineTo(800, mouse_pos.y());
        path1.lineTo(800,0);
        path1.lineTo(0,0);
        path1.closeSubpath();
        painter.setClipPath (path1);
        painter.drawPixmap (0,0, m_lastPixmap);
        painter.restore();

        /*Draw region 2*/
        painter.save();
        path2.moveTo(mouse_pos.x(), 600);
        path2.lineTo(800, mouse_pos.y());
        path2.lineTo(800, 600);
        path2.closeSubpath ();
        painter.setClipPath (path2);
        painter.drawPixmap (0,0,m_pixmap);
        painter.restore();

        /* Draw region 3 */
        path3.moveTo(mouse_pos.x(), 600);
        path3.cubicTo(mouse_pos.x(), 600, mouse_pos.x()+9*index/5,(mouse_pos.y()+600)/2, mouse_pos.x(), mouse_pos.y());
        path3.cubicTo(mouse_pos.x(), mouse_pos.y(), (mouse_pos.x()+800)/2, mouse_pos.y()+7*index/5, 800, mouse_pos.y());
        path3.closeSubpath();
//  painter.setBrush(QBrush(QColor(0xF0,0xF8,0xFF)));
// painter.setOpacity(0.9);
        painter.setBrush(QBrush(QImage(":/images/image/0.png")));
        painter.drawPath(path3);
    }
    else if(direct==Right)
    {
        QPoint mouse_pos=QPoint(index*8,600-42*index/10);

        QPainterPath path1;
        QPainterPath path2;
        QPainterPath path3;

        /* Draw region 1 */
        painter.save ();
        path1.moveTo(800,600);
        path1.lineTo(mouse_pos.x(), 600);
        path1.lineTo(0, mouse_pos.y());
        path1.lineTo(0,0);
        path1.lineTo(800,0);
        path1.closeSubpath();
        painter.setClipPath (path1);
        painter.drawPixmap (0,0, m_lastPixmap);
        painter.restore();

        /*Draw region 2*/
        painter.save();
        path2.moveTo(mouse_pos.x(), 600);
        path2.lineTo(0, mouse_pos.y());
        path2.lineTo(0, 600);
        path2.closeSubpath ();
        painter.setClipPath (path2);
        painter.drawPixmap (0,0,m_pixmap);
        painter.restore();

        /* Draw region 3 */
        path3.moveTo(mouse_pos.x(), 600);
        path3.cubicTo(mouse_pos.x(), 600, mouse_pos.x()-9*index/5,(mouse_pos.y()+600)/2, mouse_pos.x(), mouse_pos.y());
        path3.cubicTo(mouse_pos.x(), mouse_pos.y(), (mouse_pos.x())/2, mouse_pos.y()+7*index/5, 0, mouse_pos.y());
        path3.closeSubpath();
// painter.setBrush(QBrush(QColor(0xF0,0xF8,0xFF)));
//        painter.setOpacity(0.9);
        painter.setBrush(QBrush(QImage(":/images/image/0.png")));
        painter.drawPath(path3);
    }
}
http://download.csdn.net/download/strong46066999/3082155 和这个代码一样。。。。
chen_jiancong 2011-08-25
  • 打赏
  • 举报
回复
如果写下注释该多好啊,有点看不明白
blueliuyun 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yiyaaixuexi 的回复:]
C/C++ code


void folding::paintEvent(QPaintEvent *event)
{

QPainter painter(this);

painter.fillRect(rect(), Qt::black);
painter.setRenderHint(QPainter::SmoothPixmapTransform, t……
[/Quote]
哇……更换头像了啊?
zhu_xz 2011-08-25
  • 打赏
  • 举报
回复
http://www.substanceofcode.com/2011/03/14/flipboard-page-flip-with-qt-qml/
LJSKR 2011-08-24
  • 打赏
  • 举报
回复
现在还看不明白,先收藏了……
钱国正 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yiyaaixuexi 的回复:]

C/C++ code


void folding::paintEvent(QPaintEvent *event)
{

QPainter painter(this);

painter.fillRect(rect(), Qt::black);
painter.setRenderHint(QPainter::SmoothPixmapTransform, true);
……
[/Quote]虽然说这个精华,我还是不太懂撒
changing_better 2011-08-24
  • 打赏
  • 举报
回复
最好带注释,嘿嘿
top_dada 2011-08-23
  • 打赏
  • 举报
回复
果断收藏。。。
冰镇宝贝321 2011-08-23
  • 打赏
  • 举报
回复
念茜 2011-08-23
  • 打赏
  • 举报
回复


void folding::paintEvent(QPaintEvent *event)
{

QPainter painter(this);

painter.fillRect(rect(), Qt::black);
painter.setRenderHint(QPainter::SmoothPixmapTransform, true);
painter.setRenderHint(QPainter::Antialiasing, true);

painter.drawPixmap(0, 0, m_pixmap);

int index = m_animator.currentFrame();

if(index>=99)
return;


if(direct==Left)
{
QPoint mouse_pos=QPoint(800-index*8,600-60*index/10);

QPainterPath path1;
QPainterPath path2;
QPainterPath path3;

/* Draw region 1 */
painter.save ();
path1.moveTo(0,600);
path1.lineTo(mouse_pos.x(), 600);
path1.lineTo(800, mouse_pos.y());
path1.lineTo(800,0);
path1.lineTo(0,0);
path1.closeSubpath();
painter.setClipPath (path1);
painter.drawPixmap (0,0, m_lastPixmap);
painter.restore();

/*Draw region 2*/
painter.save();
path2.moveTo(mouse_pos.x(), 600);
path2.lineTo(800, mouse_pos.y());
path2.lineTo(800, 600);
path2.closeSubpath ();
painter.setClipPath (path2);
painter.drawPixmap (0,0,m_pixmap);
painter.restore();

/* Draw region 3 */
path3.moveTo(mouse_pos.x(), 600);
path3.cubicTo(mouse_pos.x(), 600, mouse_pos.x()+9*index/5,(mouse_pos.y()+600)/2, mouse_pos.x(), mouse_pos.y());
path3.cubicTo(mouse_pos.x(), mouse_pos.y(), (mouse_pos.x()+800)/2, mouse_pos.y()+7*index/5, 800, mouse_pos.y());
path3.closeSubpath();
// painter.setBrush(QBrush(QColor(0xF0,0xF8,0xFF)));
// painter.setOpacity(0.9);
painter.setBrush(QBrush(QImage(":/images/image/0.png")));
painter.drawPath(path3);
}
else if(direct==Right)
{
QPoint mouse_pos=QPoint(index*8,600-42*index/10);

QPainterPath path1;
QPainterPath path2;
QPainterPath path3;

/* Draw region 1 */
painter.save ();
path1.moveTo(800,600);
path1.lineTo(mouse_pos.x(), 600);
path1.lineTo(0, mouse_pos.y());
path1.lineTo(0,0);
path1.lineTo(800,0);
path1.closeSubpath();
painter.setClipPath (path1);
painter.drawPixmap (0,0, m_lastPixmap);
painter.restore();

/*Draw region 2*/
painter.save();
path2.moveTo(mouse_pos.x(), 600);
path2.lineTo(0, mouse_pos.y());
path2.lineTo(0, 600);
path2.closeSubpath ();
painter.setClipPath (path2);
painter.drawPixmap (0,0,m_pixmap);
painter.restore();

/* Draw region 3 */
path3.moveTo(mouse_pos.x(), 600);
path3.cubicTo(mouse_pos.x(), 600, mouse_pos.x()-9*index/5,(mouse_pos.y()+600)/2, mouse_pos.x(), mouse_pos.y());
path3.cubicTo(mouse_pos.x(), mouse_pos.y(), (mouse_pos.x())/2, mouse_pos.y()+7*index/5, 0, mouse_pos.y());
path3.closeSubpath();
// painter.setBrush(QBrush(QColor(0xF0,0xF8,0xFF)));
// painter.setOpacity(0.9);
painter.setBrush(QBrush(QImage(":/images/image/0.png")));
painter.drawPath(path3);
}
}
源码下载地址: https://pan.quark.cn/s/071bc9a5519f ### 用友NC二次开发指导手册知识点概览#### 一、建立NC环境- **内容概述**:本部分内容阐述了构建适用于用友NC软件的开发环境的具体方法,涵盖了数据库构建、NC软件的安装与配置,以及Eclipse集成开发环境的设置等环节。- **详细介绍**: - **1.1.1 数据库的建立** - **知识点**:掌握数据库选择的原则、安装与配置步骤,以及如何创建适配NC应用的数据库实例。 - **详细说明**:为确保NC系统能够顺利运行,首先需依据项目需求挑选合适的数据库管理系统,例如Oracle或SQL Server等,并参照官方文档完成安装与配置流程。随后,创建一个新的数据库实例,用以存储NC应用程序的相关数据。 - **1.1.2 NC的安装** - **知识点**:NC安装的完整流程、需要注意的事项以及常见问题的解决策略。 - **详细说明**:在安装NC之前,必须确认服务器满足最低的硬件配置要求,随后下载并执行NC安装程序,依照向导提示完成安装过程。在安装期间,需特别注意选择正确的数据库连接信息,并设定好系统管理员的账号与密码。 - **1.1.3 NC的启动与配置** - **知识点**:NC服务的启动与关闭、网络参数设置、系统初始化过程等。 - **详细说明**:在安装完成之后,需要配置NC服务,以确保其能够在服务器上正常运行。此过程包括设置正确的网络参数、配置系统初始化脚本等操作。 - **1.1.4 在Eclipse中配置NC开发环境** - **知识点**:Eclipse集成开发环境的设置、插件的安装与配置。 - **详细说明**:在Eclipse中配置...
内容概要:本文档围绕“模块化多电平直流变压器MMDC”的Simulink仿真项目展开,详细介绍了基于梯形调与短重叠角SO模式的控策略,并支持定电压与定功率两种运行模式的建模与仿真。项目旨在复现IEEE标准研究成果,重点展示电力电子变换器在高压直流输电与新能源系统集成中的关键技术应用。文档还系统梳理了团队在MATLAB/Simulink平台上的多领域科研服务能力,涵盖电力系统、智能优化算法、机器学习、路径规划、信号处理等多个前沿方向,突出了其在电力电子变换器、新能源系统及智能控策略方面的建模仿真优势。; 适合人群:具备一定MATLAB/Simulink基础,从事电力电子、电力系统、自动化、新能源等相关领域研究的科研人员或工程技术人员,尤其适用于正在开展研究生课题或承担科研项目的研究者。; 使用场景及目标:①开展模块化多电平直流变压器(MMDC)的建模与仿真研究;②实现并优化梯形调与短重叠角控策略在直流变压器中的动态响应;③完成定电压与定功率控模式间的切换逻辑设计与性能对比测试;④作为高校电力电子课程或科研项目的教学案例与技术参考。; 阅读建议:此资源以Simulink仿真实现为核心,建议读者结合提供的仿真模型与代码进行实践操作,重点关注控策略的设计逻辑与关键参数的调试过程。同时,可参考文档中列举的其他技术方向拓展研究思路,并充分利用团队提供的完整资源(如公众号“荔枝科研社”及百度网盘链接)获取配套资料与技术支持。

21,494

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧