1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
#include <QtGui>
#include <QtCore/QtCore>
#include <QtCore/QObject>
#include <windows.h>
const int SCREENX = GetSystemMetrics(SM_CXSCREEN);
const int SCREENY = GetSystemMetrics(SM_CYSCREEN);
class QPopup : public QDialog
{
Q_OBJECT;
private:
int mqx;
int mqy;
int mpx;
int mpy;
bool etat;
QLabel *label;
QGridLayout *layout;
public:
QPopup(const int x, const int y, int py = 1)
{
etat = false;
init(x,y);
if(py < 1)
py = 1;
for(int i = 1; i<py; i++)
{
mpy-=y;
}
}
void addWid(QWidget* widget,const int a = 0,const int b = 0,const int c = 0,const int d = 0)
{
layout->addWidget(widget,a,b,c,d);
}
void Show(const QString titre,const QString texte,const int _ti = 3000)
{
checkEtat();
label->setText(texte);
setWindowTitle(titre);
QSound son("sons/alerte.wav");
son.play();
QTimer* timer = new QTimer(this);
QObject::connect(timer,SIGNAL(timeout()), this ,SLOT(animateClose()));
animateShow();
timer->start(_ti);
}
public slots:
void animateShow()
{
checkEtat();
setGeometry(mpx,SCREENX,mqx,mqy);
show();
for(int i = SCREENX; i >= mpy; i--)
{
setGeometry(mpx,i,mqx,mqy);
}
}
void animateClose()
{
checkEtat();
for(int i = mpy; i < SCREENX; i++)
{
setGeometry(mpx,i,mqx,mqy);
}
close();
}
private:
void init(const int x,const int y)
{
mqx = x;
mqy = y;
mpx = SCREENX-(mqx+40);
mpy = SCREENY-(mqy+40);
label = new QLabel(this);
layout = new QGridLayout(this);
label->resize(mqx,mqy);
label->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
label->setWordWrap(true);
layout->addWidget(label);
setLayout(layout);
setGeometry(mpx,mpy,mqx,mqy);
setLayout(layout);
setWindowFlags(Qt::WindowTitleHint);
etat = true;
}
void checkEtat()
{
if(!etat)
init(mqx,mqy);
}
}; |