当前位置: 首页 > news >正文

Qt编写上下界面切换效果/前进到下一个界面/后退到上一个页面/零件工艺及管理设计系统

一、前言说明

上下切换界面的效果在网页上还是比较常见的,也就是后退可以切换到上一个打开的界面,前进可以切换到当前页面的下一个打开过的页面,如果没有上一个下一个则不切换,一般这种功能是一些年纪比较大的人常用,年轻人可能首选单击对应的菜单或者按钮去切换到自己想要的界面,而不是通过上下按钮去切换。如果只有一级菜单,那这个功能实现还是非常简单的,只需要记住对应切换过的界面的索引即可,每当切换到一个页面,则加入对应的索引。而如果还有二级菜单,则还需要记住对应的二级页面的子页面的索引,先切换到一级页面,然后切换到二级页面,这个是本功能的最大难点。

算法思路:

  1. 定义跳转索引存储切换到的页面,前进和后退按钮单击的时候改变,同时在主动单击了菜单按钮的时候自动移到末尾
  2. 定义跳转时间存储最后触发跳转的时间,避免跳转产生的页面切换记录到跳转队列中,只有用户单击按钮的切换才需要存储
  3. 定义跳转队列存储页面标识,格式(一级菜单索引_二级菜单索引),比如系统设置对应 6_0 6_1
  4. 添加跳转页面标识中需要对重复的页面进行过滤,比如用户单击了重复的按钮
  5. 一级菜单和二级菜单所在的页面关联全局跳转信号进行判断处理
  6. 主界面一级菜单切换,需要判断第一个标识切换到对应的子页面
  7. 子界面二级菜单切换,需要判断第一个标识是否正确,然后再判断第二个标识切换到对应的子页面
  8. 堆栈窗体切换前都判断下是否已经在
  9. 页面跳转带了标识和参数,参数可以存储各种数据集合用于查询处理等

二、效果图

QQ截图20240507114850

QQ截图20240507115055

QQ截图20240507114842

三、功能特点

四、相关地址

  1. 国内站点:https://gitee.com/feiyangqingyun
  2. 国际站点:https://github.com/feiyangqingyun
  3. 个人作品:https://blog.csdn.net/feiyangqingyun/article/details/97565652

五、相关代码

#include "dbdata.h"DbConnThread *DbData::DbLocal = 0;int DbData::UserLogID = 0;int DbData::JumpIndex = 0;
QDateTime DbData::JumpTime = QDateTime::currentDateTime().addDays(-1);
QStringList DbData::JumpPages = QStringList();
void DbData::appendJumpPage(const QString &jumpPage, bool checkExist, bool checkTime)
{//超过最大数则移除最前面的int count = JumpPages.count();if (count >= 50) {JumpPages.removeFirst();}//过滤重复的页面+跳转页面产生的if (count > 0) {QString jumpLast = JumpPages.last();if (checkExist && jumpLast == jumpPage) {return;}QDateTime now = QDateTime::currentDateTime();if (checkTime && abs(now.secsTo(DbData::JumpTime)) <= 1) {return;}}//添加页面信息JumpPages << jumpPage;//一旦切换过页面则重置索引到最后//这里很容易误解需要-1,其实上面刚刚添加过所有又+1了JumpIndex = count;//qDebug() << TIMEMS << "appendJumpPage" << JumpIndex << JumpPages;
}#include "frmjumppage.h"
#include "ui_frmjumppage.h"
#include "qthelper.h"frmJumpPage::frmJumpPage(QWidget *parent) : QWidget(parent), ui(new Ui::frmJumpPage)
{ui->setupUi(this);this->initForm();this->initIcon();
}frmJumpPage::~frmJumpPage()
{delete ui;
}void frmJumpPage::initForm()
{//通过弱属性机制设置当前面板的按钮为圆形ui->widget->setProperty("shape", "circle");ui->btnBackward->setToolTip("后退");ui->btnForeward->setToolTip("前进");//全局换肤颜色变了自动更新图标connect(AppEvent::Instance(), SIGNAL(changeStyle()), this, SLOT(initIcon()));
}void frmJumpPage::initIcon()
{//设置按钮图标CommonNav::setIconBtn(ui->widget);
}void frmJumpPage::on_btnBackward_clicked()
{if (DbData::JumpIndex > 0) {DbData::JumpIndex--;QString type = DbData::JumpPages.at(DbData::JumpIndex);AppEvent::Instance()->slot_jumpPage(type, "");}
}void frmJumpPage::on_btnForeward_clicked()
{if (DbData::JumpIndex < DbData::JumpPages.count() - 1) {DbData::JumpIndex++;QString type = DbData::JumpPages.at(DbData::JumpIndex);AppEvent::Instance()->slot_jumpPage(type, "");}
}
http://www.hskmm.com/?act=detail&tid=25923

相关文章:

  • 【题解】P1131 [ZJOI2007] 时态同步
  • LGP9120 [NOIP 2022.5] 密码锁 学习笔记
  • 深入解析:OpenCV CUDA模块图像处理------创建CUDA加速的Canny边缘检测器对象createCannyEdgeDetector()
  • 机器人技术奖学金项目助力STEM教育发展
  • SAP ABAP 事务码 RZ12 里的 Max Number of WPs Used 参数的作用介绍
  • busybox 没有 clear 命令吗
  • 实用指南:Hive SQL 中 BY 系列关键字全解析:从排序、分发到分组的核心用法
  • 经过基于流视频预测的可泛化双手运行基础策略
  • 每个JavaScript开发者都应掌握的33个核心概念
  • 解决Docker存储空间不足问题 - 指南
  • 完整教程:数据结构:递归的种类(Types of Recursion)
  • Nova Premier模型安全评估结果解析
  • Paypal 设置不自动换汇
  • 诺贝尔生理与医学奖颁给这项革命技术,多家中国公司已布局!(附名单)
  • 钱璐璐,唯一通讯发Nature,作者仅2人!
  • 华为员工工资待遇表:
  • 体验mcp服务的开发集成和演示过程 - 智慧园区
  • AI技术全景解析:从架构设计到社会影响
  • 对话系统中零样本与少样本学习技术解析
  • 随手记 | 关于AI最新趋势和未来发展方向探讨
  • 何夜无雨 - Ishar
  • 玩转树莓派屏幕之四:适配tslib增加触屏准确度
  • caddy搭建静态+PHP+伪静态Web服务器
  • 全自动 AI 视频创作与发布工具:LuoGen-agent
  • 静态库.a与.so库文件的生成与使用
  • CF2145D Inversion Value of a Permutation
  • 牛客刷题-Day8
  • Educational Codeforces Round 183 (Rated for Div. 2)
  • 高三闲话 #2
  • D. Inversion Value of a Permutation edu div2