新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > Qt圖形編程基礎之:實驗內容——使用Qt編寫“Hello,World”程序

        Qt圖形編程基礎之:實驗內容——使用Qt編寫“Hello,World”程序

        作者: 時間:2013-09-13 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/257102.htm

        /****************************************************************************

        **以下是hello.h的代碼

        ****************************************************************************/

        #ifndefHELLO_H

        #defineHELLO_H

        #includeqvariant.h>

        #includeqwidget.h>

        classQVBoxLayout;

        classQHBoxLayout;

        classQGridLayout;

        classHello:publicQWidget

        {

        Q_OBJECT

        public:

        Hello(QWidget*parent=0,constchar*name=0,WFlagsfl=0);

        ~Hello();

        /*以下是手動添加的代碼*/

        signals:

        voidclicked();

        protected:

        voidmouseReleaseEvent(QMouseEvent*);

        voidpaintEvent(QPaintEvent*);

        privateslots:

        voidanimate();

        private:

        QStringt;

        intb;

        };

        #endif//HELLO_H

        /****************************************************************************

        **以下是hello.cpp源代碼

        ****************************************************************************/

        #includehello.h

        #includeqlayout.h>

        #includeqvariant.h>

        #includeqtooltip.h>

        #includeqwhatsthis.h>

        #includeqpushbutton.h>

        #includeqtimer.h>

        #includeqpainter.h>

        #includeqpixmap.h>

        /*

        *ConstructsaHellowhichisachildof'parent',withthe

        *name'name'andwidgetflagssetto'f'

        */

        Hello::Hello(QWidget*parent,constchar*name,WFlagsfl)

        :QWidget(parent,name,fl)

        {

        if(!name)

        setName(Hello);

        resize(240,320);

        setMinimumSize(QSize(240,320));

        setMaximumSize(QSize(240,320));

        setSizeIncrement(QSize(240,320));

        setBaseSize(QSize(240,320));

        QPalettepal;

        QColorGroupcg;

        cg.setColor(QColorGroup::Foreground,black);

        cg.setColor(QColorGroup::Button,QColor(192,192,192));

        cg.setColor(QColorGroup::Light,white);

        cg.setColor(QColorGroup::Midlight,QColor(223,223,223));

        cg.setColor(QColorGroup::Dark,QColor(96,96,96));

        cg.setColor(QColorGroup::Mid,QColor(128,128,128));

        cg.setColor(QColorGroup::Text,black);

        cg.setColor(QColorGroup::BrightText,white);

        cg.setColor(QColorGroup::ButtonText,black);

        cg.setColor(QColorGroup::Base,white);

        cg.setColor(QColorGroup::Background,white);

        cg.setColor(QColorGroup::Shadow,black);

        cg.setColor(QColorGroup::Highlight,black);

        cg.setColor(QColorGroup::HighlightedText,white);

        pal.setActive(cg);

        cg.setColor(QColorGroup::Foreground,black);

        cg.setColor(QColorGroup::Button,QColor(192,192,192));

        cg.setColor(QColorGroup::Light,white);

        cg.setColor(QColorGroup::Midlight,QColor(220,220,220));

        cg.setColor(QColorGroup::Dark,QColor(96,96,96));

        cg.setColor(QColorGroup::Mid,QColor(128,128,128));

        cg.setColor(QColorGroup::Text,black);

        cg.setColor(QColorGroup::BrightText,white);

        cg.setColor(QColorGroup::ButtonText,black);

        cg.setColor(QColorGroup::Base,white);

        cg.setColor(QColorGroup::Background,white);

        cg.setColor(QColorGroup::Shadow,black);

        cg.setColor(QColorGroup::Highlight,black);

        cg.setColor(QColorGroup::HighlightedText,white);

        pal.setInactive(cg);

        cg.setColor(QColorGroup::Foreground,QColor(128,128,128));

        cg.setColor(QColorGroup::Button,QColor(192,192,192));

        cg.setColor(QColorGroup::Light,white);

        cg.setColor(QColorGroup::Midlight,QColor(220,220,220));

        cg.setColor(QColorGroup::Dark,QColor(96,96,96));

        cg.setColor(QColorGroup::Mid,QColor(128,128,128));

        cg.setColor(QColorGroup::Text,black);

        cg.setColor(QColorGroup::BrightText,white);

        cg.setColor(QColorGroup::ButtonText,QColor(128,128,128));

        cg.setColor(QColorGroup::Base,white);

        cg.setColor(QColorGroup::Background,white);

        cg.setColor(QColorGroup::Shadow,black);

        cg.setColor(QColorGroup::Highlight,black);

        cg.setColor(QColorGroup::HighlightedText,white);

        pal.setDisabled(cg);

        setPalette(pal);

        QFontf(font());

        f.setFamily(adobe-helvetica);

        f.setPointSize(29);

        f.setBold(TRUE);

        setFont(f);

        setCaption(tr());

        /*以下是手動添加的代碼*/

        t=Hello,World;

        b=0;

        QTimer*timer=newQTimer(this);

        connect(timer,SIGNAL(timeout()),SLOT(animate()));

        timer->start(40);

        }

        /*

        *Destroystheobjectandfreesanyallocatedresources

        */

        Hello::~Hello()

        {

        }

        /*以下至結尾是手動添加的代碼*/

        voidHello::animate()

        {

        b=(b+1)15;

        repaint(FALSE);

        }

        /*

        HandlesmousebuttonreleaseeventsfortheHellowidget.

        Weemittheclicked()signalwhenthemouseisreleasedinside

        thewidget.

        */

        voidHello::mouseReleaseEvent(QMouseEvent*e)

        {

        if(rect().contains(e->pos()))

        emitclicked();

        }

        /*HandlespainteventsfortheHellowidget.

        Flicker-freeupdate.Thetextisfirstdrawninthepixmapandthe

        pixmapisthenbltedtothescreen.

        */

        voidHello::paintEvent(QPaintEvent*)

        {

        staticintsin_tbl[16]={0,38,71,92,100,92,

        71,38,0,-38,-71,-92,-100,-92,-71,-38};

        if(t.isEmpty())

        eturn;

        /*1:Computesomesizes,positionsetc.*/

        QFontMetricsfm=fontMetrics();

        intw=fm.width(t)+20;

        inth=fm.height()*2;

        intpmx=width()/2-w/2;

        intpmy=height()/2-h/2;

        /*2:Createthepixmapandfillitwiththewidgetsbackground*/

        QPixmappm(w,h);

        pm.fill(this,pmx,pmy);

        /*3:Paintthepixmap.Coolwaveeffect*/

        QPainterp;

        intx=10;

        inty=h/2+fm.descent();

        inti=0;

        p.begin(pm);

        p.setFont(font());

        while(!t[i].isNull())

        {

        nti16=(b+i)15;

        .setPen(QColor((15-i16)*16,255,255,QColor::Hsv));

        wText(x,y-sin_tbl[i16]*h/800,t.mid(i,1),1);

        +=fm.width(t[i]);

        +;

        }

        p.end();

        /*4:CopythepixmaptotheHellowidget*/

        bitBlt(this,pmx,pmy,pm);

        }

        linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

        linux相關文章:linux教程




        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 射洪县| 桃园县| 青浦区| 崇仁县| 曲阜市| 南安市| 呼伦贝尔市| 白玉县| 金门县| 旬阳县| 西盟| 淮北市| 高安市| 新郑市| 德安县| 防城港市| 安顺市| 简阳市| 博湖县| 礼泉县| 古蔺县| 台山市| 沭阳县| 孝义市| 泸西县| 江山市| 尉犁县| 辉县市| 克什克腾旗| 安康市| 三明市| 屯门区| 宜城市| 泸水县| 寿阳县| 东山县| 晋江市| 涟水县| 马鞍山市| 信宜市| 平乐县|