博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
类QQ右下角弹出框(Qt)
阅读量:5950 次
发布时间:2019-06-19

本文共 2210 字,大约阅读时间需要 7 分钟。

hot3.png

使用Qt写的类QQ右下角弹出框

/***   main.cpp*/#include 
#include "dialog.h"int main(int argc, char *argv[]){ QApplication a(argc, argv); Dialog w; w.show(); return a.exec();}/*** dialog.h*/#ifndef DIALOG_H#define DIALOG_H#include
#include
#include
#include
#include
namespace Ui {class Dialog;}class Dialog : public QDialog{    Q_OBJECT    public:    explicit Dialog(QWidget *parent = 0);    ~Dialog();    private:    Ui::Dialog *ui;    QDesktopWidget desktop;    QPropertyAnimation* animation;    QTimer *remainTimer;    void showAnimation();private slots:    void closeAnimation();    void clearAll();};#endif // DIALOG_H/***dialog.cpp*/#include "dialog.h"#include "ui_dialog.h"#include
Dialog::Dialog(QWidget *parent) :    QDialog(parent),    ui(new Ui::Dialog){    ui->setupUi(this);    this->setWindowFlags(Qt::FramelessWindowHint); //隐藏菜单栏    this->move((desktop.availableGeometry().width()-this->width()),desktop.availableGeometry().height());//初始化位置到右下角    showAnimation(); //开始显示右下角弹出框}Dialog::~Dialog(){    delete ui;}//弹出动画void Dialog::showAnimation(){    //显示弹出框动画    animation=new QPropertyAnimation(this,"pos");    animation->setDuration(2000);    animation->setStartValue(QPoint(this->x(),this->y()));    animation->setEndValue(QPoint((desktop.availableGeometry().width()-this->width()),(desktop.availableGeometry().height()-this->height())));    animation->start();    //设置弹出框显示2秒、在弹回去    remainTimer=new QTimer();    connect(remainTimer,SIGNAL(timeout()),this,SLOT(closeAnimation()));    remainTimer->start(4000);//弹出动画2S,停留2S回去}//关闭动画void Dialog::closeAnimation(){    //清除Timer指针和信号槽    remainTimer->stop();    disconnect(remainTimer,SIGNAL(timeout()),this,SLOT(closeAnimation()));    delete remainTimer;    remainTimer=NULL;    //弹出框回去动画    animation->setStartValue(QPoint(this->x(),this->y()));    animation->setEndValue(QPoint((desktop.availableGeometry().width()-this->width()),desktop.availableGeometry().height()));    animation->start();    //弹回动画完成后清理动画指针    connect(animation,SIGNAL(finished()),this,SLOT(clearAll()));}//清理动画指针void Dialog::clearAll(){    disconnect(animation,SIGNAL(finished()),this,SLOT(clearAll()));    delete animation;    animation=NULL;}

转载于:https://my.oschina.net/geekice/blog/162486

你可能感兴趣的文章
html_01之基础标签
查看>>
DEV 等待窗口
查看>>
maven安装出错原因分析
查看>>
触发器及触发器的作用
查看>>
浅释丹道筑基功―—―混元桩【转载】
查看>>
django admin基础
查看>>
virtualenv使用
查看>>
手机页面点击不选中元素
查看>>
023_接口类,抽象类,多态,鸭子类型,封装
查看>>
猴子爬山
查看>>
试把一个正整数n拆分为若干个
查看>>
实验03博客园总结
查看>>
laravel captcha 验证码制作
查看>>
phpexcel导入excel处理大数据
查看>>
CSS1
查看>>
【React js】 笔记
查看>>
网络时间戳
查看>>
Node.js 插件安装及常用插件
查看>>
(转载博文)VC++API速查
查看>>
【宣讲会感言】腾讯实习生
查看>>