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
| #include <QtGui>
#include <cmath>
//Simule une action
double action_simulation(int nb =1000)
{
double somme(0.);
for (unsigned int j=0;j<nb;++j) somme+=sqrt(j);
return somme;
}
class MyQPushButton : public QPushButton
{
public :
//createur.
//text : text du boutton
//exe : commande à executer lors de l'appui.
MyQPushButton(const QString & text, QWidget * parent = 0):QPushButton (text,parent){resize(75, 30);setFont(QFont("Times", 18, QFont::Bold));};
virtual void mouseReleaseEvent ( QMouseEvent * event )
{
QProgressDialog mybar( "Wait ...", 0, 0, 0);
mybar.setWindowModality(Qt::ApplicationModal);
mybar.show();
for (int i=0;i<20000;++i)
{
action_simulation() ;
}
}
};
class MyQPushButton2 : public QPushButton
{
public :
//createur.
//text : text du boutton
//exe : commande à executer lors de l'appui.
MyQPushButton2(const QString & text, QWidget * parent = 0):QPushButton (text,parent){resize(75, 30);setFont(QFont("Times", 18, QFont::Bold));};
virtual void mouseReleaseEvent ( QMouseEvent * event )
{
QProgressDialog mybar( "Wait ...", 0, 0, 0);
mybar.setWindowModality(Qt::ApplicationModal);
mybar.show();
for (int i=0;i<20000;++i)
{
qApp->processEvents();
action_simulation() ;
}
}
};
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
QWidget w;
QVBoxLayout vl(&w);
//boutton : L'appliquation se bloque pendant le traitement
MyQPushButton bouton1("Sans qApp->processEvents()");
//boutton : L'appliquation ne se bloque pas pendant le traitement
MyQPushButton2 bouton2("Avec qApp->processEvents()");
vl.addWidget(&bouton1);
vl.addWidget(&bouton2);
w.show();
return app.exec();
} |
Partager