新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Qt圖形編程基礎(chǔ)之:Qt/Embedded開(kāi)發(fā)入門(mén)

        Qt圖形編程基礎(chǔ)之:Qt/Embedded開(kāi)發(fā)入門(mén)

        作者: 時(shí)間:2013-09-13 來(lái)源:網(wǎng)絡(luò) 收藏

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

        圖12.8使用了QGroupBox進(jìn)行排列的日期類(lèi)QDateTimeEdit、一個(gè)行編輯框類(lèi)QLine-
        Edit、一個(gè)文本編輯類(lèi)QTextEdit和一個(gè)組合框類(lèi)QComboBox。

        圖12.9是以QGrid排列的一個(gè)QDial、一個(gè)QProgressBar、一個(gè)QSpinBox、一個(gè)QScrollBar、一個(gè)QLCDNumber和一個(gè)QSlider。

        圖12.10是以QGrid排列的一個(gè)QIconView、一個(gè)QListView、一個(gè)QListBox和一個(gè)QTable。

             

        圖12.8 QGrid組合圖示1    圖12.9 QGrid組合圖示2 圖12.10鐘表部件圖示

        3.自定義窗口

        開(kāi)發(fā)者可以通過(guò)子類(lèi)化QWidget或它的一個(gè)子類(lèi)創(chuàng)建他們自己的部件或?qū)υ捒颉榱伺e例說(shuō)明子類(lèi)化,下面提供了數(shù)字鐘部件的完整代碼。

        鐘表部件是一個(gè)能顯示當(dāng)前時(shí)間并自動(dòng)更新的LCD。一個(gè)冒號(hào)分隔符隨秒數(shù)的流逝而閃爍,如圖12.10所示。

        Clock從QLCDNumber部件繼承了LCD功能。它有一個(gè)典型部件類(lèi)所擁有的典型構(gòu)造函數(shù),帶有可選的parent和name參數(shù)(如果設(shè)置了name參數(shù),測(cè)試和調(diào)試會(huì)更容易)。系統(tǒng)有規(guī)律地調(diào)用從QObject繼承的timerEvent()函數(shù)。

        它在clock.h中定義如下所示:

        #includeqlcdnumber.h>

        classClock:publicQLCDNumber

        {

        public:

        Clock(QWidget*parent=0,constchar*name=0);

        protected:

        voidtimerEvent(QTimerEvent*event);

        private:

        voidshowTime();

        boolshowingColon;

        };

        構(gòu)造函數(shù)showTime()是用當(dāng)前時(shí)間初始化鐘表,并且告訴系統(tǒng)每1000ms調(diào)用一次timerEvent()來(lái)刷新LCD的顯示。在showTime()中,通過(guò)調(diào)用QLCDNumber::display()來(lái)顯示當(dāng)前時(shí)間。每次調(diào)用showTime()來(lái)讓冒號(hào)閃爍時(shí),冒號(hào)就被空白代替。

        clock.cpp的源碼如下所示:

        #includeqdatetime.h>

        #includeclock.h

        Clock::Clock(QWidget*parent,constchar*name)

        :QLCDNumber(parent,name),showingColon(true)

        {

        showTime();

        startTimer(1000);

        }

        voidClock::timerEvent(QTimerEvent*)

        {

        showTime();

        }

        voidClock::showTime()

        {

        QStringtimer=QTime::currentTime().toString().left(5);

        if(!showingColon)

        {

        time[2]='';

        }

        display(time);

        showingColon=!showingColon;

        }

        文件clock.h和clock.cpp完整地聲明并實(shí)現(xiàn)了Clock部件。

        #includeqapplication.h>

        #includeclock.h

        intmain(intargc,char**argv)

        {

        QApplicationapp(argc,argv);

        Clock*clock=newClock;

        app.setMainWidget(clock);

        clock->show();

        returnapp.exec();

        }

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

        linux相關(guān)文章:linux教程




        評(píng)論


        相關(guān)推薦

        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 陆丰市| 若羌县| 孟津县| 台东市| 清远市| 玉山县| 平塘县| 阜阳市| 武定县| 科尔| 扶风县| 东乡| 旬邑县| 马尔康县| 皮山县| 石阡县| 阿坝县| 梁平县| 安顺市| 商城县| 和林格尔县| 左贡县| 博爱县| 林西县| 石屏县| 于都县| 铜川市| 马鞍山市| 葵青区| 罗田县| 嘉峪关市| 宜黄县| 安龙县| 湟中县| 绩溪县| 措勤县| 勐海县| 乃东县| 大港区| 务川| 嘉义县|