日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt 控件渐变隐藏消失

發(fā)布時間:2025/1/21 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt 控件渐变隐藏消失 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

在 Qt 開發(fā)中,經(jīng)常會設(shè)置某些控件透明的透明度,比如設(shè)置QLabel字體漸變隱藏,設(shè)置某個按鈕漸變消失等等,這在消息提示框中會常用到,顯示一定時間后讓控件有一個動畫逐漸消失的過程,其實(shí)原理很簡單,就是設(shè)置控件的透明度,直到透明度為0后再將控件設(shè)置為隱藏即可。動畫的過程可以用兩種方式來實(shí)現(xiàn),第一是通過定時器,不斷的設(shè)置控件的透明度,第二是通過QPropertyAnimation來實(shí)現(xiàn),當(dāng)然,后者會更簡單。那么該如何設(shè)置控件透明度呢,這里需要用到QGraphicsOpacityEffect類。

正文

首先來看看效果圖

當(dāng)然,還可以將 QLabel 換成其他控件,比如 QPushButton等等。
來看源碼:

Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);m_pGraphicsOpacityEffect = new QGraphicsOpacityEffect(ui->label);m_pGraphicsOpacityEffect->setOpacity(1);ui->label->setGraphicsEffect(m_pGraphicsOpacityEffect);m_pNameAnimation = new QPropertyAnimation(m_pGraphicsOpacityEffect,"opacity",this);m_pNameAnimation->setEasingCurve(QEasingCurve::Linear);m_pNameAnimation->setDuration(2500); }Widget::~Widget() {delete ui;delete m_pGraphicsOpacityEffect;delete m_pNameAnimation; }void Widget::on_pushButton_clicked() {m_pNameAnimation->setStartValue(1);m_pNameAnimation->setEndValue(0);m_pNameAnimation->start(QAbstractAnimation::KeepWhenStopped); }

代碼很簡單,就是QGraphicsOpacityEffect + QPropertyAnimation來實(shí)現(xiàn)想要的效果。

以上是設(shè)置控件的透明度,如果想要設(shè)置窗口透明度,需要用到 QWidget 的函數(shù)setWindowOpacity來實(shí)現(xiàn),原理和上面一樣,也可以通過QPropertyAnimation來實(shí)現(xiàn)動畫效果。這里就不再講述。

做了一個簡單的 demo,在這里下載

總結(jié)

以上是生活随笔為你收集整理的Qt 控件渐变隐藏消失的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。