首页 > 其他分享 >Qt第六十五章:自定义菜单栏的隐藏、弹出

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

时间:2023-10-30 17:04:30浏览次数:33  
标签:right Qt 自定义 self 第六十五章 rgb radius border 255


目录

一、效果图

二、qtDesigner

三、ui文件如下:

四、代码


 

一、效果图

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

二、qtDesigner

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

①先拖出相应的控件

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

②布局一下

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

 ③填上一些样式

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

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

 

相关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 sys

from 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 = 100
        standard = 0

        if widthRightBox == 0:
            widthExtended = maxExtend
        else:
            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())

标签:right,Qt,自定义,self,第六十五章,rgb,radius,border,255
From: https://blog.51cto.com/u_14121041/8095413

相关文章

  • python 飞书 获取飞书租户访问令牌 自定义机器人 向webhook_url发送POST请求
    importjsonimportrequestswebhook_url=post_data=#见应用凭证#获取飞书租户访问令牌,用于调用飞书开放平台的其他API接口#url:飞书开放平台的获取租户访问令牌的API接口地址url=r"https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/"r=......
  • QTreeWidget 添加右键菜单
    有时需要为QTreeWidget的子条目添加右键菜单功能,主要有两种方案来实现:方案一该方案比较通用,通过为QTreeWidget建立信号槽,在接受itemPressed的信号时会被触发,然后判断当前是否为鼠标右键,若为鼠标右键则创建添加对应的菜单栏,并提供相应的功能。//1.QTreeWidget*tree为......
  • wpf prism 自定义委托命令DelegateCommand
    //构造函数publicMainWindowViewModel(){EditCommand=newDelegateCommand(_editCommand);}//命令声明一publicDelegateCommandEditCommand{get;set;}//构造函数中实例化委托void_editCommand(){MessageBox.Show("EditCommand");}//命令生命......
  • 请说说qt主要用的控件?信号和槽怎么实现的?
    qt主要用到的控件:QWidget基类,QPushButton普通按钮,QLineEdit文本输入,QSlider滑动条,QLabel显示文本或图像,QMainWindow创建应用程序的主窗口,QCeckBox复选框,QRadioButton单选按钮。 信号和槽的实现:每个控件可以发出信号,其它控件可以连接到这些信号的槽函数,以响应事件。......
  • 【Qt6】列表模型——几个便捷的列表类型
    前面一些文章,老周简单介绍了在Qt中使用列表模型的方法。很明显,使用ItemModel在许多时候还是挺麻烦的——要先建模型,再放数据,最后才构建视图。为了简化这些骚操作,Qt提供了几个便捷类。今天咱们逐个看看。一、QListWidget 这厮对应的ListView,用来显示简单的列表。要添加列......
  • Spring Boot环境下自定义shiro过滤器会过滤所有的url的问题
    问题起因:在Shiro配置类中定义如下:@BeanpublicShiroFilterFactoryBeanshiroFilterFactoryBean(ShiroAuthFiltershiroAuthFilter,SecurityManagersecurityManager){ShiroFilterFactoryBeanfactoryBean=newShiroFilterFactoryBean();Map<String,......
  • 商用 LTS Qt 6.2.10 发布
    导读我们近日为商业许可证持有者发布了Qt6.2.10LTS。作为一个补丁版本,Qt6.2.10不添加任何新功能,但提供了错误修复和其他改进。你可以使用维护工具将Qt6.2.10添加到现有的在线安装中,也可以使用Qt在线安装程序进行简洁安装。离线安装程序可在Qt账户下载区下载......
  • 【Shell】环境变量 自定义变量 特殊变量
    Shell变量:环境变量目标1、理解什么是系统环境变量?2、掌握常用的系统环境变量都有哪些?Shell变量的介绍变量用于存储管理临时的数据,这些数据都是在运行内存中的.变量类型系统环境变量自定义变量特殊符号变量系统环境变量介绍是系统提供的共享变量.是linux系统加载Shell的配置文件中......
  • 021-Qt 配置GitHub Copilot
    Qt配置GitHubCopilot文章目录Qt配置GitHubCopilot项目介绍GitHubCopilot配置GitHubCopilotQt前置条件升级QtGitHubCopilot前置条件激活的了GitHubCopilot账号安装Neovim启用插件,重启Qt配置GitHubCopilo安装Nodejs下载[copilot.vim](https://github.com/github/copil......
  • coredns自定义域名设置
    #增加自定义域名www.abc.com,对应的IP是1.2.3.4。kubectleditconfigmapcoredns-nkube-systemfallthrough表示在hosts找不到解析的域名时,传递给CoreDNS的下一个插件,避免集群内部域名解析失败。重建corednspod,刷新corednsConfigMap配置。参考资料https://www.cnblogs.c......