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

Qt第六十五章:自定义菜单栏的隐藏、弹出

目录

一、效果图

二、qtDesigner

三、ui文件如下:

四、代码


 

一、效果图

二、qtDesigner

原理是利用属性动画来控制QFrame的minimumWidth属性。

①先拖出相应的控件

②布局一下

 ③填上一些样式

 

相关QSS

background-color: rgb(238, 242, 255);
border:2px solid rgb(255, 255, 255);
border-radius:15px
QFrame{
background-color: qradialgradient(cx:0, cy:0, radius:1, fx:0.1, fy:0.1, stop:0 rgb(243, 175, 189),  stop:1 rgb(155, 118, 218));
border-top-left-radius:30px;
border-top-right-radius:0px;
border-bottom-right-radius:0px;
border-bottom-left-radius:30px;
}

三、ui文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"><class>Form</class><widget class="QWidget" name="Form"><property name="geometry"><rect><x>0</x><y>0</y><width>400</width><height>300</height></rect></property><property name="windowTitle"><string>Form</string></property><layout class="QVBoxLayout" name="verticalLayout"><item><widget class="QPushButton" name="pushButton"><property name="text"><string>PushButton</string></property></widget></item><item><widget class="QFrame" name="frame"><property name="frameShape"><enum>QFrame::StyledPanel</enum></property><property name="frameShadow"><enum>QFrame::Raised</enum></property><layout class="QHBoxLayout" name="horizontalLayout"><item><widget class="QSplitter" name="splitter"><property name="orientation"><enum>Qt::Horizontal</enum></property><widget class="QLabel" name="label"><property name="styleSheet"><string notr="true">background-color: rgb(238, 242, 255);
border:2px solid rgb(255, 255, 255);
border-radius:15px</string></property><property name="text"><string>TextLabel</string></property></widget><widget class="QLabel" name="label_2"><property name="styleSheet"><string notr="true">background-color: rgb(238, 242, 255);
border:2px solid rgb(255, 255, 255);
border-radius:15px</string></property><property name="text"><string>TextLabel</string></property></widget></widget></item><item><widget class="QFrame" name="frame_2"><property name="maximumSize"><size><width>0</width><height>16777215</height></size></property><property name="styleSheet"><string notr="true">QFrame{
background-color: qradialgradient(cx:0, cy:0, radius:1, fx:0.1, fy:0.1, stop:0 rgb(243, 175, 189),  stop:1 rgb(155, 118, 218));
border-top-left-radius:30px;
border-top-right-radius:0px;
border-bottom-right-radius:0px;
border-bottom-left-radius:30px;
}</string></property><property name="frameShape"><enum>QFrame::StyledPanel</enum></property><property name="frameShadow"><enum>QFrame::Raised</enum></property></widget></item></layout></widget></item></layout></widget><resources/><connections/>
</ui>

四、代码

使用uic工具将ui文件转成py文件

import sysfrom PySide6.QtCore import QPropertyAnimation, QEasingCurve, QParallelAnimationGroup
from PySide6.QtWidgets import *from zzz.ui_home_03 import Ui_Form# 继承UI类
class MainWindow(QWidget, Ui_Form):def __init__(self, parent=None):super(MainWindow, self).__init__(parent)self.setupUi(self)self.pushButton.clicked.connect(self.settingBox)def settingBox(self):widthRightBox = self.frame_2.width()maxExtend = 100standard = 0if widthRightBox == 0:widthExtended = maxExtendelse:widthExtended = standard# 创建属性动画self.right_box = QPropertyAnimation(self.frame_2, b"minimumWidth")self.right_box.setDuration(500)self.right_box.setStartValue(widthRightBox)self.right_box.setEndValue(widthExtended)self.right_box.setEasingCurve(QEasingCurve.InOutQuart)self.right_box.start()# 动画组 如果是多个动画同时执行,则创建动画组。# self.group = QParallelAnimationGroup()# self.group.addAnimation(self.right_box)# self.group.start()if __name__ == '__main__':app = QApplication()window = MainWindow()window.show()sys.exit(app.exec())

http://www.lryc.cn/news/204170.html

相关文章:

  • element table中嵌套el-select 无法选择问题
  • 2.6.C++项目:网络版五子棋对战之数据管理模块-游戏房间管理模块的设计
  • 计算机视觉中的数据预处理与模型训练技巧总结
  • GeoHash分享
  • 【超详细】CentOS 7安装MySQL 5.7【安装及密码配置、字符集配置、远程连接配置】
  • Elasticsearch 8.X 分词插件版本更新不及时解决方案
  • Delete `␍`eslintprettier/prettier
  • 4种实用的制作URL 文件的方法
  • css总结
  • [C语言]排序的大乱炖——喵喵的成长记
  • Docker 网络与Cgroup资源限制
  • D - United We Stand
  • 【1.总纲】
  • I/O模型之非阻塞IO
  • 2023版 STM32实战11 SPI总线读写W25Q
  • Spring Security认证源码解析(示意图)
  • 2023.10.22 关于 定时器(Timer) 详解
  • 【STM32】GPIO控制LED(寄存器版)
  • Spring Boot OAuth 2.0整合—高级配置
  • 软考-虚拟专用网原理与应用
  • clock_property 时钟的常用属性
  • 平板有必要买触控笔吗?推荐的ipad手写笔
  • Qt扫描-QMoive 理论总结
  • 类似东郊到家预约家政保洁小程序搭建
  • [补题记录] Atcoder Beginner Contest 325(E、F)
  • 1024啊啊啊啊啊啊
  • 淘宝商品详情API接口(H5端和APP端),淘宝详情页,商品属性接口,商品信息查询
  • JVM的几个面试重点
  • [yolo系列:YOLOV7改进-添加CoordConv,SAConv.]
  • 【万字实操】可视化运维平台openGauss Datakit,带你轻松玩转openGauss 5.0