Qt平滑彈出頁面

目標功能:

(1)按下btn,彈出綠色頁面。

?(2)按下btn2,綠色頁面隱藏。

?(3)按下左邊余下的區域,綠色頁面也隱藏。

(4)平滑地顯示和隱藏

效果:

?

?form.h

#ifndef FORM_H
#define FORM_H#include <QWidget>namespace Ui {
class Form;
}class Form : public QWidget
{Q_OBJECTpublic:explicit Form(QWidget *parent = nullptr);~Form();private slots:void on_pushButton_clicked();private:Ui::Form *ui;
signals:void begin_move();
};#endif // FORM_H

?form.cpp

#include "form.h"
#include "ui_form.h"Form::Form(QWidget *parent) :QWidget(parent),ui(new Ui::Form)
{ui->setupUi(this);
}Form::~Form()
{delete ui;
}void Form::on_pushButton_clicked()
{emit begin_move();
}

?widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include "form.h"
#include <QPropertyAnimation>
#include <QMouseEvent>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();
protected:void mousePressEvent(QMouseEvent *event) override;bool eventFilter(QObject *obj,QEvent *event) override;
private slots:void on_pushButton_clicked();
private:Ui::Widget *ui;Form *f;QPropertyAnimation *animation,*animation1;bool flag;bool isShow;
};
#endif // WIDGET_H

widget.cpp?

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QEvent>#pragma execution_character_set("utf-8")
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);f=new Form(this);f->hide();flag=1;isShow=0;ui->pushButton_2->installEventFilter(this);connect(f,&Form::begin_move,this,[=](){if(isShow == 1){animation1->start();isShow=0;}});
}Widget::~Widget()
{delete ui;
}void Widget::mousePressEvent(QMouseEvent *event)
{if(event->button()==Qt::LeftButton){qDebug()<<"按下了鼠標左鍵";qDebug()<<event->pos();if(isShow == 1){animation1->start();isShow=0;}}
}bool Widget::eventFilter(QObject *obj, QEvent *event)
{if(obj==ui->pushButton_2){if(event->type() == QEvent::MouseButtonPress){qDebug()<<"按下按鈕";QMouseEvent * me =static_cast<QMouseEvent *>(event);if(me->button() & Qt::LeftButton){qDebug()<<"按下左鍵";if(isShow == 1){animation1->start();isShow=0;}}return false;}}return QWidget::eventFilter(obj,event);
}void Widget::on_pushButton_clicked()
{if(flag==1){flag=0;f->resize(300,height());f->move(width(),0);f->show();animation = new QPropertyAnimation(f,"pos");animation->setDuration(1000);  //設置動畫完成的時間長度animation->setStartValue(QPoint(width(),0)); //設置動畫的開始值animation->setEndValue(QPoint(width()-f->width(),0)); //設置動畫的結束值animation1 = new QPropertyAnimation(f,"pos");animation1->setDuration(1000);  //設置動畫完成的時間長度animation1->setStartValue(QPoint(width()-f->width(),0)); //設置動畫的開始值animation1->setEndValue(QPoint(width(),0)); //設置動畫的結束值}animation->start(); //啟動動畫isShow=1;
}

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/42589.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/42589.shtml
英文地址,請注明出處:http://en.pswp.cn/news/42589.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

上半年營收19億,金融壹賬通第二增長曲線“加速上坡”

8月16日&#xff0c;壹賬通金融科技有限公司&#xff08;下稱“金融壹賬通”&#xff09;發布了截至2023年6月30日中期業績報告。 根據財報&#xff0c;2023年上半年&#xff0c;金融壹賬通實現營收18.99億元&#xff0c;毛利潤為6.96億元&#xff1b;歸母凈利潤率從-26.1%提升…

卷積神經網絡全解!CNN結構、訓練與優化全維度介紹!

目錄 一、引言1.1 背景和重要性1.2 卷積神經網絡概述 二、卷積神經網絡層介紹2.1 卷積操作卷積核與特征映射卷積核大小多通道卷積 步長與填充步長填充 空洞卷積&#xff08;Dilated Convolution&#xff09;分組卷積&#xff08;Grouped Convolution&#xff09; 2.2 激活函數R…

相機的位姿在地固坐標系ECEF和ENU坐標系的轉換

在地球科學和導航領域&#xff0c;通常使用地心地固坐標系&#xff08;ECEF&#xff0c;Earth-Centered, Earth-Fixed&#xff09;和東北天坐標系&#xff08;ENU&#xff0c;East-North-Up&#xff09;來描述地球上的位置和姿態。如下圖所示&#xff1a; ?地心地固坐標ecef和…

Linux內核的兩種安全策略:基于inode的安全與基于文件路徑的安全

實現系統安全的策略 在Linux中&#xff0c;一切且為文件&#xff0c;實現系統安全的策略主要可分為兩種&#xff1a;基于inode的安全、基于文件路徑的安全。 基于inode的安全 為文件引入安全屬性&#xff0c;安全屬性不屬于文件內容&#xff0c;它是文件的元數據&#xff0c…

EV PV AC SPI CPI TCPI

SPI EV / PV CPI EV / ACCPI 1.25 SPI 0.8 PV 10 000 BAC 100 000EV PV * SPI 10 000 * 0.8 8000 AC EV / CPI 8000 / 1.25 6400TCPI (BAC - EV) / (BAC -AC) (100 000 - 8 000) / (100 000 - 6 400) 92 000 / 93 600 0.98290598

RabbitMQ面試題

1. 什么是MQ MQ 就是消息隊列。是軟件和軟件進行通信的中間件產品 2. MQ的優點 異步處理 - 相比于傳統的串行、并行方式&#xff0c;提高了系統吞吐量。 應用解耦 - 系統間通過消息通信&#xff0c;不用關心其他系統的處理。 流量削鋒 - 可以通過消息隊列長度控制請求量…

Selenium webdriver_manager根據瀏覽器版本自動下載對應驅動程序

前言 webdriver_manager是什么&#xff1f; webdriver_manager 是 Python 中的一個庫&#xff0c;用于管理 Web 驅動程序。它的作用是自動下載和設置不同瀏覽器&#xff08;如 Chrome、Firefox、Edge 等&#xff09;的 Web 驅動程序&#xff0c;以便在自動化測試中使用這些瀏…

每日一題:leetcode1338 3n塊披薩

給你一個披薩&#xff0c;它由 3n 塊不同大小的部分組成&#xff0c;現在你和你的朋友們需要按照如下規則來分披薩&#xff1a; 你挑選 任意 一塊披薩。Alice 將會挑選你所選擇的披薩逆時針方向的下一塊披薩。Bob 將會挑選你所選擇的披薩順時針方向的下一塊披薩。重復上述過程…

SCSS 學習筆記 和 vscode下載live sass compiler插件配置

1、下載livelive sass compiler插件并配置 // 在 已有代碼 下面 添加下面 代碼&#xff0c;一般剛剛下載打開最后一行是&#xff1a;// "liveSassCompile.settings.autoprefix": [],// 所以直接 把下面復制進去保存就行"liveSassCompile.settings.autoprefix&qu…

MySQL:在MySQL中實現toStartOfQuarter和toStartOfWeek等函數

文章目錄 在 MySQL 中實現 ClickHouse 日期函數&#xff1a;toStartOfYear/toStartOfQuarter/toStartOfMonth/toMonday/toStartOfWeektoStartOfYeartoStartOfQuartertoStartOfMonthtoStartOfWeek/toMonday 在 MySQL 中實現 ClickHouse 日期函數&#xff1a;toStartOfYear/toSta…

基于Java+SpringBoot+Vue的烏魯木齊南山冰雪旅游服務網站【源碼+論文+演示視頻+包運行成功】

博主介紹&#xff1a;?csdn特邀作者、博客專家、java領域優質創作者、博客之星&#xff0c;擅長Java、微信小程序、Python、Android等技術&#xff0c;專注于Java技術領域和畢業項目實戰? &#x1f345;文末獲取源碼聯系&#x1f345; &#x1f447;&#x1f3fb; 精彩專欄推…

MVCC 是否徹底解決了事物的隔離性 ?

目錄 1. 什么是 MVCC 2. MVCC 是否徹底解決了事物的隔離性 3. MySQL 中如何實現共享鎖和排他鎖 4. MySQL 中如何實現悲觀鎖和樂觀鎖 1. 什么是 MVCC MVCC&#xff08;Multi-Version Concurrency Control&#xff0c;多版本并發控制&#xff09;是一種多版本并發控制機制&…

webpack 和 ts 簡單配置及使用

如何使用webpack 與 ts結合使用 新建項目 &#xff0c;執行項目初始化 npm init -y會生成 {"name": "tsdemo01","version": "1.0.0","description": "","main": "index.js","scripts&…

Spring的ApplicationEvent簡單使用

ApplicationEvent以及Listener是Spring為我們提供的一個事件監聽、訂閱的實現&#xff0c;內部實現原理是觀察者設計模式&#xff0c;設計初衷也是為了系統業務邏輯之間的解耦&#xff0c;提高可擴展性以及可維護性。事件發布者并不需要考慮誰去監聽&#xff0c;監聽具體的實現…

自動駕駛數據集匯總

1.Nuscenes 數據集鏈接&#xff1a;nuScenes nuscenes數據集下有多個任務&#xff0c;涉及Detection&#xff08;2D/3D&#xff09;、Tracking、prediction、激光雷達分割、全景任務、規劃控制等多個任務&#xff1b; nuScenes數據集是一個具有三維目標注釋的大型自動駕駛數…

【ARM 嵌入式 編譯系列 10.3 -- GNU elfutils 工具小結】

文章目錄 什么是 GNU elfutils?GNU elfutils 常用工具有哪些?objcopy 常用參數有哪些?GNU binutils和GNU elfutils區別是什么?上篇文章:ARM 嵌入式 編譯系列 10.2 – 符號表與可執行程序分離詳細講解 什么是 GNU elfutils? GNU elfutils是一個開源的工具集,用于處理ELF…

2023-8-15差分矩陣

題目鏈接&#xff1a;差分矩陣 #include <iostream>using namespace std;const int N 1010;int n, m, q; int a[N][N], b[N][N];void insert(int x1, int y1, int x2, int y2, int c) {b[x1][y1] c;b[x1][y2 1] - c;b[x2 1][y1] - c;b[x2 1][y2 1] c; }int main…

基于SOLIDWORKS配置功能建立塑料模具標準件庫

在塑料模具的設計過程中&#xff0c;建立其三維模型對于后續進行CAE分析和CAM加工是非常重要的。除了型腔和型芯以外&#xff0c;塑料模具中的標準件很多&#xff0c;如推桿、導柱、導套、推板、限位釘等&#xff0c;這些對于不同的產品是需要反復調用的。目前&#xff0c;我國…

汽車OTA活動高質量發展的“常”與“新”

伴隨著車主的頻繁崔更&#xff0c;車企除了卷硬件、拼價格&#xff0c;逐漸將精力轉移到汽車全生命周期的常用常新。時至下半年&#xff0c;車企OTA圈愈發熱鬧&#xff0c;以新勢力、新實力為代表新一代車企&#xff0c;OTA運營活動逐漸進入高質量發展期。 所謂高質量&#xf…

記錄--webpack和vite原理

這里給大家分享我在網上總結出來的一些知識&#xff0c;希望對大家有所幫助 前言 每次用vite創建項目秒建好&#xff0c;前幾天用vue-cli創建了一個項目&#xff0c;足足等了我一分鐘&#xff0c;那為什么用 vite 比 webpack 要快呢&#xff0c;這篇文章帶你梳理清楚它們的原理…