A brief introduction to QT 37 Interface text display dynamic

Source: Internet
Author: User
Tags setinterval
First, Introduction
Recent project requirements: When the interface is displayed, all static data is displayed in a dynamic refresh manner. Add a couple of timer Qtimer to the original code, and handle the Showevent and Hideevent events (the overall comparison is simpler).

Second, detailed 1, Code(1) processbardynamic.h
#ifndef processbardynamic_h #define PROCESSBARDYNAMIC_H #include <QtGui> class Processbardynamic:public Qwidget
    {q_object public:processbardynamic (qwidget *parent = 0);

~processbardynamic ();
    Protected:void paintevent (qpaintevent *event);
    void Resizeevent (Qresizeevent * event);
    void Mousepressevent (Qmouseevent *event);
    void Mousemoveevent (Qmouseevent *event);
    void Mousereleaseevent (Qmouseevent *event);
    void Showevent (Qshowevent *event);

void Hideevent (Qhideevent *event);
    Private Slots:void Slotupdatetimer ();

void Slotmoneytimer ();
    Private:qpoint BeginDrag;
    BOOL Bpressflag;
    Qlabel *firstlabel;
    Qlabel *secondlabel;
    Qpushbutton *closebtn;
    Qtimer *moneytimer;
    Qtimer *updatetimer;
    Qprogressbar *progressbar;
    Qlabel *progressbarlabel;

    Qpushbutton *surebtn;
    int currentmoneyvalue;
    int currentnumvalue;
int currentpercentvalue;

};
 #endif//Processbardynamic_h
(2) Processbardynamic.cpp
#include "processbardynamic.h" #define Maxmoney 660066 #define MAXNUM #define Maxpercent::P processbardynamic Bardynamic (Qwidget *parent): Qwidget (parent, Qt::framelesswindowhint), Bpressflag (false), Currentmoneyvalue
    (0), Currentnumvalue (0), Currentpercentvalue (0) {Resize (300, 150);
    Setautofillbackground (FALSE);
    Qpalette pal = palette ();
    Pal.setcolor (Qpalette::background, Qcolor (0xff,0xff,0xff,0xff));

    SetPalette (PAL);
    Firstlabel = new Qlabel (this); Firstlabel->setalignment (Qt::alignleft |
    Qt::alignvcenter); Firstlabel->settext (tr ("<font color= ' #666666 ' >%1</font><font color= ' #FC822B ' size=4><b

    >$%2</b></font> "). Arg (TR (" Remainingmoney ")). Arg (" 0 "));
    Secondlabel = new Qlabel (this); Secondlabel->setalignment (Qt::alignright |
    Qt::alignvcenter); Secondlabel->settext (QString <font color= ' #666666 ' >%1</font><font color= ' #FC822B ' size=4> <b>%2&Lt;/b></font><font color= ' #666666 ' >%3</font>). Arg (TR ("input")). Arg (0). Arg (TR ("number"));
    ProgressBar = new Qprogressbar (this);
    Progressbar->setrange (0, 100);
    Progressbar->reset ();
    Progressbar->setvalue (0);

    Progressbar->settextvisible (FALSE);
                              Progressbar->setstylesheet ("Qprogressbar{border:none;background: #E5E5E5; border-radius:2px;}"
    "Qprogressbar::chunk{background: #009DD6; border-radius:2px;}");
    Progressbarlabel = new Qlabel (this);
    Progressbarlabel->setstylesheet ("Color: #333333;");
    Progressbarlabel->setalignment (Qt::aligncenter);
    Progressbarlabel->setfont (Qfont ("Arial", Qfont::normal));

    Progressbarlabel->settext (QString ("%1%"). Arg (0));
    SUREBTN = new Qpushbutton (this);
    Surebtn->setfont (Qfont ("Arial", Qfont::normal));
                    Surebtn->setstylesheet ("Qpushbutton{border:none;color: #FFFFFF; background: #009DD6; border-radius:4px;}"       "Qpushbutton:hover{border-color:green;background: #00ACF0;}");
    Surebtn->setfocuspolicy (Qt::nofocus);

    Surebtn->settext (TR ("sure"));
    Moneytimer = new Qtimer (this);
    Moneytimer->setinterval (1);
    Connect (Moneytimer, SIGNAL (timeout ()), this, SLOT (Slotmoneytimer ()));
    Updatetimer = new Qtimer (this);
    Updatetimer->setinterval (20);

    Connect (Updatetimer, SIGNAL (timeout ()), this, SLOT (Slotupdatetimer ()));
    CLOSEBTN = new Qpushbutton (this);
                            Closebtn->setstylesheet ("Qpushbutton{background-image:url (:/close.png); border-style:flat;}"
    "Qpushbutton:hover{background-image:url (:/close_hover.png); border-style:flat;}");
    Closebtn->setfocuspolicy (Qt::nofocus);
Connect (closebtn, SIGNAL (clicked ()), this, SLOT (Close ()));
    } processbardynamic::~processbardynamic () {if (updatetimer->isactive ()) {updatetimer->stop ());
    } if (Moneytimer->isactive ()) {moneytimer->stop ();
   } Currentmoneyvalue = 0;
    Currentnumvalue = 0;
Currentpercentvalue = 0; } void Processbardynamic::slotupdatetimer () {if (Currentnumvalue <= maxnum) {Secondlabel->settext (QSt Ring ("<font color= ' #666666 ' >%1</font><font color= ' #FC822B ' size=4><b>%2</b></
    Font><font color= ' #666666 ' >%3</font>). Arg (TR ("input")). Arg (Currentnumvalue). Arg (TR ("number"));
        } if (Currentpercentvalue <= maxpercent) {progressbar->setvalue (currentpercentvalue);
    Progressbarlabel->settext (QString ("%1%"). Arg (Currentpercentvalue));
    } if (Currentnumvalue > Maxnum && currentpercentvalue > Maxpercent) {updatetimer->stop ();
    } currentnumvalue++;
currentpercentvalue++;
        } void Processbardynamic::slotmoneytimer () {if (Currentmoneyvalue <= maxmoney) {QString value = "";
        int number = Currentmoneyvalue; if (number < 1000) {value =Qstring::number (number);
            else if (number < 1000 * 1000) {value = Qstring::number (number/1000);
            Value + = ",";
            QString temp = "";
            temp = Qstring::number (number%1000);
            temp = temp.rightjustified (3, ' 0 ');
            Temp.fill (' 0 ', 3);
            Temp.push_back (Qstring::number (number));
            temp = Temp.right (3);
        Value + = QString ("%1"). Arg (number%1000, 3, Qchar (' 0 '));
            else if (number < 1000*1000*1000) {value = Qstring::number (number/(1000*1000));
            Value + = ",";
            Number = number% (1000*1000);
            Value + = QString ("%1"). Arg (number/1000, 3, Qchar (' 0 '));
            Value + = ",";

        Value + = QString ("%1"). Arg (number%1000, 3, Qchar (' 0 ')); Firstlabel->settext (tr ("<font color= ' #666666 ' >%1</font><font color= ' #FC822B ' SIZE=4&GT;&LT;B&G T;$%2</b></font> "). Arg(TR ("Remainingmoney")). Arg (value));
    } if (Currentmoneyvalue = = Maxmoney) {moneytimer->stop ();
    } Currentmoneyvalue = Currentmoneyvalue + 500;
    if (Currentmoneyvalue > Maxmoney) {currentmoneyvalue = Maxmoney;

} void Processbardynamic::p aintevent (qpaintevent *event) {qwidget::p aintevent (event);}
    void Processbardynamic::resizeevent (Qresizeevent *event) {firstlabel->setgeometry (15, 25, 150, 30);
    Secondlabel->setgeometry (165, 25, 120, 30);
    Progressbar->setgeometry (15, 73, 230, 5);
    Progressbarlabel->setgeometry (255, 62, 30, 25);
    Surebtn->setgeometry (15, 90, 270, 45);
    Closebtn->setgeometry (Width ()-15, 5, 10, 10);
    Move ((qapplication::d esktop ()->width ()-width ())/2, (qapplication::d esktop ()->height ()-height ())/2);
Qwidget::resizeevent (event);
    } void Processbardynamic::showevent (Qshowevent *event) {currentmoneyvalue = 0;
    Currentnumvalue = 0; Currentpercentvalue = 0;
    Updatetimer->start ();
    Moneytimer->start ();
Qwidget::showevent (event); } void Processbardynamic::hideevent (Qhideevent *event) {if (updatetimer->isactive ()) {updatetimer->st
    OP ();
    } if (Moneytimer->isactive ()) {moneytimer->stop ();
} qwidget::hideevent (event);
    } void Processbardynamic::mousepressevent (Qmouseevent *event) {Bpressflag = true;
    BeginDrag = Event->pos ();
Qwidget::mousepressevent (event); } void Processbardynamic::mousemoveevent (Qmouseevent *event) {if (Bpressflag) {Qpoint relapos (qcursor::p OS (
        )-BeginDrag);
    Move (Relapos);
} qwidget::mousemoveevent (event);
    } void Processbardynamic::mousereleaseevent (Qmouseevent *event) {Bpressflag = false;
Qwidget::mousereleaseevent (event);
 }
(3) Main.cpp
#include "processbardynamic.h"
#include <QApplication>

int main (int argc, char *argv[])
{
    Qapplication A (argc, argv);
    Qtranslator Translator;
    Translator.load ("Processbardynamic.qm", ":/");
    A.installtranslator (&translator);
    Processbardynamic W;
    W.show ();

    return a.exec ();
}
(4) Run (hide and display will be animated again)


Third, summary(1) The above code is not very difficult, only provide a way to display. The test code has been uploaded to csdn:http://download.csdn.net/detail/taiyang1987912/9347839.
(2) If there are suggestions, please leave a message, thank you first.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.