gpt4 book ai didi

Qt5 : show notification popups

转载 作者:行者123 更新时间:2023-12-04 14:26:10 29 4
gpt4 key购买 nike

我正在编写一个图像查看器,它允许我执行一些操作。作为对某些操作(如复制/移动/删除/..)的视觉反馈,我希望在我的应用程序窗口中间有一个像样的弹出窗口,通知已完成的操作,并在大约一秒钟后消失。

当然我可以只使用一个 Widget 并修改它以满足我的需要:

  • 放置在应用程序窗口的中间/顶部(无论布局如何)
  • 在给定时间后消失
  • 不可能有交互/焦点——点击通知应该像点击它后面的内容一样
  • 体面的风格(例如透明和易于阅读)

.. 我只是想知道是否有专门用于此目的的东西

(我不是在谈论出现在窗口管理器的某些任务栏附近的托盘通知)

最佳答案

在qt中使用动画效果可以实现漂亮的popup淡入/淡出效果,示例代码如下:

QGraphicsOpacityEffect* effect=new QGraphicsOpacityEffect();
this->label->setGraphicsEffect(effect);
this->label->setStyleSheet("border: 3px solid gray;border-radius:20px;background-color:#ffffff;color:gray");
this->label->setAlignment(Qt::AlignCenter);
this->label->setText("Your Notification");
QPropertyAnimation* a=new QPropertyAnimation(effect,"opacity");
a->setDuration(1000); // in miliseconds
a->setStartValue(0);
a->setEndValue(1);
a->setEasingCurve(QEasingCurve::InBack);
a->start(QPropertyAnimation::DeleteWhenStopped);
this->label->show();
connect(this->timer,&QTimer::timeout,this,&Notifier::fadeOut);
this->timer->start(2000); // 1000 ms to make the notification opacity full and 1000 seconds to call the fade out so total of 2000ms.

你的淡出方法是:

void fadeOut(){
QGraphicsOpacityEffect *effect = new QGraphicsOpacityEffect();
this->label->setGraphicsEffect(effect);
QPropertyAnimation *a = new QPropertyAnimation(effect,"opacity");
a->setDuration(1000); // it will took 1000ms to face out
a->setStartValue(1);
a->setEndValue(0);
a->setEasingCurve(QEasingCurve::OutBack);
a->start(QPropertyAnimation::DeleteWhenStopped);
connect(a,SIGNAL(finished()),this->label,SLOT(hide()));
}

关于Qt5 : show notification popups,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43133884/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com