Qt界面设计--侧边栏隐藏和滑出
时间:2023-01-13
本文章向大家介绍Qt界面设计--侧边栏隐藏和滑出,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在日常项目中,界面布局上经常使用到侧边栏的方式,在侧边栏放置控件进行复合使用,可以实现子功能界面的隐藏和滑出,效果展示如下:
界面控件很简单,主界面QWidget,侧边栏也用一个QWidget和一个按钮QPushbutton来进行组合。通过点击按钮来显示和隐藏侧边栏。主要用到的是控件的move()函数,配合QPropertyAnimation实现动画效果滑动显示隐藏。动画滑出动画效果使用到的是QPropertyAnimation类的setEasingCurve()函数,通过设置函数参数来实现不同的动画效果,具体效果可以通过Qt Create的帮助文件查询到。
mainwindow.h源码:
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QPropertyAnimation> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: Ui::MainWindow *ui; QPropertyAnimation *m_propertyAnimation; QPropertyAnimation *m_propertyAnimation2; bool m_bSideflag = false;private slots: void on_pushButton_clicked(); }; #endif // MAINWINDOW_H
mainwindow.cpp源码:
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); ui->widget_side->move(-ui->widget_side->width(),0);// 左侧停靠 ui->pushButton->move(-1,ui->widget_side->height()/2); m_propertyAnimation = new QPropertyAnimation(ui->widget_side,"geometry"); m_propertyAnimation->setEasingCurve(QEasingCurve::InOutSine); m_propertyAnimation->setDuration(800); m_propertyAnimation2 = new QPropertyAnimation(ui->pushButton,"geometry"); m_propertyAnimation2->setEasingCurve(QEasingCurve::InOutSine); m_propertyAnimation2->setDuration(800); } MainWindow::~MainWindow() { delete ui; }void MainWindow::on_pushButton_clicked() { //显示侧边栏 if(!m_bSideflag) { m_propertyAnimation->setStartValue(QRect(-this->rect().width(),0,ui->widget_side->width(),ui->widget_side->height())); m_propertyAnimation->setEndValue(QRect(0,0,ui->widget_side->width(),ui->widget_side->height())); m_propertyAnimation->start(); m_propertyAnimation2->setStartValue(QRect(-1,ui->widget_side->height()/2-ui->pushButton->height()/2,ui->pushButton->width(),ui->pushButton->height())); m_propertyAnimation2->setEndValue(QRect(ui->widget_side->width()-2,ui->widget_side->height()/2-ui->pushButton->height()/2,ui->pushButton->width(),ui->pushButton->height())); m_propertyAnimation2->start(); ui->pushButton->setText("<<"); m_bSideflag = !m_bSideflag; } else { m_propertyAnimation->setStartValue(QRect(0,0,ui->widget_side->width(),ui->widget_side->height())); m_propertyAnimation->setEndValue(QRect(-this->rect().width(),0,ui->widget_side->width(),ui->widget_side->height())); m_propertyAnimation->start(); m_propertyAnimation2->setStartValue(QRect(ui->widget_side->width()-2,ui->widget_side->height()/2-ui->pushButton->height()/2,ui->pushButton->width(),ui->pushButton->height())); m_propertyAnimation2->setEndValue(QRect(-1,ui->widget_side->height()/2-ui->pushButton->height()/2,ui->pushButton->width(),ui->pushButton->height())); m_propertyAnimation2->start(); ui->pushButton->setText(">>"); m_bSideflag = !m_bSideflag; } }
Qt中动画效果的功能很强大,初次接触,还有很多功能需要去不断摸索,加油!
原文地址:https://www.cnblogs.com/xionglaichuangyichuang/p/17050218.html
- 网页基础篇之如何制作简单的静态网页
- Mybatis.Net 整合 ODP.NET Managed
- 通过maven test 报org.apache.ibatis.binding.BindingException: Invalid bound statement
- 知道这几点,用微信小程序留住海量客户不是问题
- C#:DataTable映射成Model
- jenkins 多选框
- Oracle:ODP.NET Managed 小试牛刀
- C#:Func的同步、异步调用
- Python之路-day6
- hadoop1.2.1伪分布模式配置
- 有了它们,真的能让孩子赢在起跑线上吗?
- Unity 使用快速教程
- JavaScript基础
- jstack jstat 简易使用教程
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法