QT 自定义抽屉式窗口,上层覆盖下层界面,下层布局不改变

本文主要是介绍QT 自定义抽屉式窗口,上层覆盖下层界面,下层布局不改变,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、自定义需要弹出的窗口(弹出按钮放在该窗口,且外发按钮信号),注:需要设置背景色,不然弹出是透明的(不知道原因)

二、主窗口初始化

     int m_popBtnWidth = 0;int m_beginPosX = 0;int m_beginPosY = 0;QPropertyAnimation *m_propertyAnimation;  //采用属性动画void RegisterMainWnd::initPopWidget()
{m_popBtnWidth = 40;m_beginPosX = this->width() ;m_beginPosY = 0;m_detailWnd = new RegisterDetailWnd(this); //需要弹出的窗口m_detailWnd->setFixedHeight(this->height());m_detailWnd->setMinimumWidth(this->width() / 2);m_detailWnd->move(m_beginPosX - m_popBtnWidth,m_beginPosY);// 初始化将其放到主界面最右侧停靠m_curPopStatus = false;connect(m_detailWnd, &RegisterDetailWnd::popStatusChanged, this, &RegisterMainWnd::onPopStatusChanged); //连接信号m_propertyAnimation = new QPropertyAnimation(m_detailWnd,"geometry"); //初始化动画m_propertyAnimation->setEasingCurve(QEasingCurve::InOutSine);m_propertyAnimation->setDuration(800);
}

三、按钮信号处理

void RegisterMainWnd::onPopStatusChanged(bool pop)
{if(pop) //从最右边弹出,{m_propertyAnimation->setStartValue(QRect(m_beginPosX - m_popBtnWidth,m_beginPosY,m_detailWnd->width(),m_detailWnd->height()));m_propertyAnimation->setEndValue(QRect(m_beginPosX-m_detailWnd->width(),m_beginPosY,m_detailWnd->width(),m_detailWnd->height()));m_propertyAnimation->start();}else //回到最右边{m_propertyAnimation->setStartValue(QRect(m_beginPosX-m_detailWnd->width(),m_beginPosY,m_detailWnd->width(),m_detailWnd->height()));m_propertyAnimation->setEndValue(QRect(m_beginPosX - m_popBtnWidth,m_beginPosY,m_detailWnd->width(),m_detailWnd->height()));m_propertyAnimation->start();}}

三、重置弹出窗口与主界面宽度一致

void RegisterMainWnd::resizeEvent(QResizeEvent *e)//重写主界面的事件
{m_beginPosX = this->width() ;m_beginPosY = 0;m_detailWnd->setFixedHeight(this->height());m_detailWnd->setMinimumWidth(this->width() / 2);m_detailWnd->move(m_beginPosX - m_popBtnWidth,m_beginPosY);// 右侧停靠QWidget::resizeEvent(e);
}

这篇关于QT 自定义抽屉式窗口,上层覆盖下层界面,下层布局不改变的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/299966

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

最大流=最小割=最小点权覆盖集=sum-最大点权独立集

二分图最小点覆盖和最大独立集都可以转化为最大匹配求解。 在这个基础上,把每个点赋予一个非负的权值,这两个问题就转化为:二分图最小点权覆盖和二分图最大点权独立集。   二分图最小点权覆盖     从x或者y集合中选取一些点,使这些点覆盖所有的边,并且选出来的点的权值尽可能小。 建模:     原二分图中的边(u,v)替换为容量为INF的有向边(u,v),设立源点s和汇点t

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

POJ3041 最小顶点覆盖

N*N的矩阵,有些格子有物体,每次消除一行或一列,最少要几次消灭完。 行i - >列j 连边,表示(i,j)处有物体,即 边表示 物体。 import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;impo

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

使用JS/Jquery获得父窗口的几个方法(笔记)

<pre name="code" class="javascript">取父窗口的元素方法:$(selector, window.parent.document);那么你取父窗口的父窗口的元素就可以用:$(selector, window.parent.parent.document);如题: $(selector, window.top.document);//获得顶级窗口里面的元素 $(

Oracle type (自定义类型的使用)

oracle - type   type定义: oracle中自定义数据类型 oracle中有基本的数据类型,如number,varchar2,date,numeric,float....但有时候我们需要特殊的格式, 如将name定义为(firstname,lastname)的形式,我们想把这个作为一个表的一列看待,这时候就要我们自己定义一个数据类型 格式 :create or repla

【QT】基础入门学习

文章目录 浅析Qt应用程序的主函数使用qDebug()函数常用快捷键Qt 编码风格信号槽连接模型实现方案 信号和槽的工作机制Qt对象树机制 浅析Qt应用程序的主函数 #include "mywindow.h"#include <QApplication>// 程序的入口int main(int argc, char *argv[]){// argc是命令行参数个数,argv是