亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Qt的溫度計界面設(shè)計

        2016-04-13 02:00:11王莉莉
        山西電子技術(shù) 2016年1期

        王莉莉

        (蘇州工業(yè)職業(yè)技術(shù)學(xué)院,江蘇 蘇州 215104)

        ?

        基于Qt的溫度計界面設(shè)計

        王莉莉

        (蘇州工業(yè)職業(yè)技術(shù)學(xué)院,江蘇 蘇州 215104)

        摘要:Qt是一個跨平臺的C++圖形用戶界面應(yīng)用程序框架。它提供給應(yīng)用程序開發(fā)者建立藝術(shù)級的圖形用戶界面所需的所用功能。Qt是完全面向?qū)ο蟮?,很容易擴(kuò)展,并且允許真正地組件編程。本文介紹的基于Qt的溫度計可以顯示溫度,并實(shí)現(xiàn)攝氏溫度與華氏溫度之間的轉(zhuǎn)換,并分別顯示出來。

        關(guān)鍵詞:Qt;溫度計界面;華氏溫度;攝氏溫度

        Qt是1991年奇趣科技開發(fā)的一個跨平臺的C++圖形用戶界面應(yīng)用程序框架。Qt是面向?qū)ο蟮目蚣?,使用特殊的代碼生成擴(kuò)展(稱為元對象編譯器(Meta Object Compiler,moc))以及一些宏,易于擴(kuò)展,允許組件編程。它既可以開發(fā)GUI程序,也可用于開發(fā)非GUI程序,比如控制臺工具和服務(wù)器。自從1996年早些時候,Qt進(jìn)入商業(yè)領(lǐng)域,它已經(jīng)成為全世界范圍內(nèi)數(shù)千種成功應(yīng)用程序的基礎(chǔ)。Qt也是流行的Linux桌面環(huán)境KDE的基礎(chǔ)。基本上,Qt同X Window上的 Motif,Openwin,GTK等圖形界面庫和Windows平臺上的MFC,OWL,VCL,ATL是同類型的,但Qt具有優(yōu)良的跨平臺特性、面向?qū)ο?、豐富的API、大量的開發(fā)文檔等優(yōu)點(diǎn)[1]。

        1設(shè)計要求

        利用Qt實(shí)現(xiàn)具有圖1所示的界面的窗體。該窗體左側(cè)的滑動條用于調(diào)整攝氏溫度的值,右側(cè)的表盤用于調(diào)整華氏溫度的值。當(dāng)調(diào)整攝氏溫度的值時,編程使滑動條上方的標(biāo)簽顯示當(dāng)前的溫度值,并使表盤同步顯示對應(yīng)的華氏溫度。當(dāng)使用表盤調(diào)整華氏溫度時,編程使段碼液晶顯示當(dāng)前的華氏溫度,并使滑動條同步顯示對應(yīng)的攝氏溫度。

        圖1 溫度計界面

        2設(shè)計原理

        本設(shè)計中,需要有實(shí)現(xiàn)溫度轉(zhuǎn)換計的界面,并實(shí)現(xiàn)攝氏溫度與華氏溫度之間的關(guān)聯(lián),使當(dāng)二者中的一個發(fā)生變化時另外一個可以隨之變化。本設(shè)計需使用5個控件,它們的布局如圖2所示。

        圖2 控件布局

        可以看出,Label和Slider可以使用一個垂直布局器;Dial和LCDNumber也可以使用一個垂直布局器,而兩個垂直布局器之間形成了水平的布局關(guān)系,最后,和PushButton一起,又形成了一個垂直布局。可以使用圖3所示的幾個布局器來設(shè)計界面。

        圖3 溫度轉(zhuǎn)換界面布局拆分圖

        攝氏溫標(biāo)(Celsius)和華氏溫標(biāo)(Fahrenheit)是兩種不同的溫度測量標(biāo)準(zhǔn)

        F=(C*9/5)+32.

        C=(F-32)*5/9 .

        其中:F表示華氏溫度,C表示攝氏溫度。

        當(dāng)滑動條發(fā)生變化時,要求標(biāo)簽可以顯示當(dāng)前的攝氏溫度值,所以,可以使用下面的代碼設(shè)置標(biāo)簽顯示當(dāng)前攝氏溫度值:

        ui->label->setNum(ui->verticalSlider->value());

        同時,還需要計算華氏溫度的值,并修改表盤的當(dāng)前值:ui->dial->setValue(ui->verticalSlider->value()*9/5+32);

        同樣,當(dāng)表盤發(fā)生變化時,要求液晶顯示部件可以顯示當(dāng)前的華氏溫度值,所以,可以使用下面的代碼設(shè)置液晶顯示部件顯示當(dāng)前華氏溫度值:

        ui->lcdNumber->display(ui->dial->value());

        同時,還需要計算對應(yīng)的攝氏溫度,并修改滑動條:

        ui->verticalSlider->setValue((ui->dial->value()-32)*5/9);

        3設(shè)計過程

        1) 在Qt Creator中新建一個工程,并命名為TempM;

        2) 在主窗體中,按照設(shè)計界面布局要求,依次添加按鈕、標(biāo)簽、垂直滑動條、LCDNumber、表盤,并將它們的位置先做大概布局。利用垂直布局按鈕將Label和滑動條Slider二者組織起來。使用同樣的方法,將LCDNumber 和表盤也使用一個垂直布局器組織起來,然后用同樣的方法將最上面的PushButton一起組織起來。至此界面設(shè)計即完成。

        3) 接下來開始關(guān)聯(lián)各個部件之間的動作。由于在該設(shè)計中,需要執(zhí)行的動作比較復(fù)雜,并不是簡單的將兩個部件連接就可以完成,所以需要編寫代碼來完成這些動作;首先編寫當(dāng)滑動條變化時,將攝氏溫度轉(zhuǎn)換為華氏溫度的代碼。使用鼠標(biāo)右擊滑動條。

        右擊滑動條在彈出的快捷菜單中選擇“Go to slot...”;將彈出圖4所示的對話框,其中列出了滑動條能夠產(chǎn)生的信號,選擇“valueChanged(int)”,該信號是在滑動條的值被改變時產(chǎn)生,然后點(diǎn)擊“OK”;

        圖4 為表盤添加信號處理函數(shù)

        4) 部分軟件編程。主程序如下:

        /main.cpp:

        #include

        #include "ConversionScreen.h"

        int main(int argc, char *argv)

        {

        QApplication app(argc, argv);

        ConversionScreen w;

        w.show();

        return app.exec();

        }

        在ConversionScreen.h中,聲明了ConversionScreen類,在這個類中聲明了設(shè)計界面所用到的部件,以及進(jìn)行溫度轉(zhuǎn)換所需要的槽函數(shù),在這里用到了兩個槽,CelTlFah實(shí)現(xiàn)攝氏溫度到華氏溫度的轉(zhuǎn)換,F(xiàn)ahToCel實(shí)現(xiàn)華氏溫度到攝氏溫度的轉(zhuǎn)換[2,3],代碼如下所示:

        //ConversionScreen.h

        #ifndef CONVERSIONSCREEN_H

        #define CONVERSIONSCREEN_H

        #include

        #include

        #include

        #include

        #include

        #include

        #include

        #include

        #include

        class ConversionScreen : public QWidget

        {

        Q_OBJECT

        public:

        ConversionScreen(QWidget *parent = 0);

        ~ConversionScreen();

        private slots:

        void CelToFah(int celNum);

        void FahToCel(int fahNum);

        private:

        void CreateScreen();

        void CreateCel();

        void CreateFah();

        QSlider* slider;

        QDial* dial;

        QHBoxLayout* celLayout;

        QVBoxLayout* fahLayout;

        };

        #endif // CONVERSIONSCREEN_H

        在ConversionScreen.cpp中對ConversionScreen類進(jìn)行了實(shí)現(xiàn),其代碼如下所示:

        #include "ConversionScreen.h"

        ConversionScreen::ConversionScreen(QWidget *parent): QWidget(parent)

        {

        CreateScreen();

        }

        ConversionScreen::~ConversionScreen()

        {

        }

        void ConversionScreen::CreateScreen()

        {

        QPushButton* quit = new QPushButton(tr("quit"));//創(chuàng)建“quit”按鈕

        CreateCel();

        CreateFah();

        QGridLayout *mainLayout = new QGridLayout; //創(chuàng)建網(wǎng)狀布局

        mainLayout->addWidget(quit, 0, 0);

        mainLayout->addLayout(celLayout, 1, 0);

        mainLayout->addLayout(fahLayout, 1, 1);

        mainLayout->setSpacing(40);

        mainLayout->setMargin(40);

        setLayout(mainLayout);

        slider->setFocus();

        華氏溫度和攝氏溫度轉(zhuǎn)換子函數(shù)為:

        void ConversionScreen::CelToFah(int celNum)

        {

        int fahNum = (celNum * 9 / 5) + 32;

        dial->setValue(fahNum);

        }

        void ConversionScreen::FahToCel(int fahNum)

        {

        int celNum = (fahNum - 32) * 5 / 9;

        slider->setValue(celNum);

        }

        5) 實(shí)驗(yàn)箱平臺顯示

        本設(shè)計交叉編譯調(diào)試環(huán)境為凌陽的A8實(shí)驗(yàn)箱為三星S5PV210,其為ARM A8架構(gòu)的處理器。GNU編譯器提供這樣的功能,在編譯器編譯時可以選擇開發(fā)所需的宿主機(jī)和目標(biāo)機(jī),從而建立開發(fā)環(huán)境。所以在進(jìn)行嵌入式開發(fā)前第一步的工作就是要安裝一臺裝有指定操作系統(tǒng)的PC 機(jī)作宿主開發(fā)機(jī)。嵌入式開發(fā)通常要求宿主機(jī)配置有網(wǎng)絡(luò),支持NFS(為交叉開發(fā)時mount 所用)。然后要在宿主機(jī)上建立交叉編譯調(diào)試的開發(fā)環(huán)境。

        接下來編譯用于實(shí)驗(yàn)箱運(yùn)行的Qt應(yīng)用程序,首先將實(shí)驗(yàn)箱的串口和網(wǎng)線連接到PC機(jī)。執(zhí)行Qt Creator的Build/Clean All,清理之前生產(chǎn)的編譯文件。單擊左下角所示的圖標(biāo),會彈出編譯選擇框。點(diǎn)擊“Build”右側(cè)的下拉列表,在彈出的四種編譯類型中,選擇“Qt for A8 Release”。點(diǎn)擊“Build All”按鈕,即可開始編譯實(shí)驗(yàn)箱運(yùn)行的版本,直到編譯選擇按鈕上方的進(jìn)度條變成綠色,即表示編譯完成。并在工程的保存目錄下,可以找到一個名為“TEMPM-build-desktop”的文件夾。編譯生成的可執(zhí)行程序即在此文件夾中[4]。

        將TEMPM-build-desktop 文件夾中的TEMPM 文件復(fù)制到Windows 下,將TEMPM下載到實(shí)驗(yàn)箱;在超級終端中,利用chmod 777 TEMPM為TEMPM添加可執(zhí)行權(quán)限,并運(yùn)行它。

        在實(shí)驗(yàn)箱上使用觸摸屏即可對應(yīng)用程序進(jìn)行操作。

        4結(jié)束語

        隨著嵌入式系統(tǒng)的飛速發(fā)展,其應(yīng)用已經(jīng)滲透到人們生活的每一個領(lǐng)域。大到軍事領(lǐng)域,小到小朋友的玩具,它正在以不同的形式悄悄地改變著人們的生產(chǎn)、生活方式。arm嵌入式很多都是運(yùn)行的嵌入式linux系統(tǒng),在linux系統(tǒng)上可以用Qt來開發(fā)可視化窗口界面程序。因此對Qt的探討有著十分重要的意義。

        參考文獻(xiàn)

        [1]蔡志明,盧傳富.精通Qt4編程[M].第2版.北京:電子工業(yè)出版社,2011.

        [2]李春葆,陶紅艷.C++程序設(shè)計教程[M].北京:清華大學(xué)出版社,2007.

        [3]華清遠(yuǎn)見嵌入式培訓(xùn)中心.嵌入式Linux C編程入門[M].北京:人民郵電出版社,2009.

        [4]凌陽科技.A8實(shí)驗(yàn)箱——Linux平臺篇[OL].[2014/08/25]http://www.unsp.com

        The Design of Thermometer Interface Based on Qt

        Wang Lili

        (SuzhouInstituteofIndustrialTechnology,SuzhouJiangsu215104,China)

        Abstract:Qt is an application framework of cross platform base on C++ graphical user interface. It provides all the functions for application developers to create an art level graphical user interface. It is fully object-oriented, easy to be expanded and allows the real component programming. In this paper, the thermometer designed based on Qt can display temperature and achieve the conversion between Celsius temperature and Fahrenheit temperature, and then show it.

        Key words:Qt; thermometer interface; Fahrenheit temperature; Celsius temperature

        中圖分類號:TP311.52;TP273

        文獻(xiàn)標(biāo)識碼:A

        文章編號:1674- 4578(2016)01- 0055- 03

        作者簡介:王莉莉(1980- ),女,江蘇徐州,講師,研究方向?yàn)殡娮有畔⒓夹g(shù)。

        收稿日期:2015-11-12

        国产a三级久久精品| 亚洲av区,一区二区三区色婷婷| 脱了老师内裤猛烈进入| 狠狠噜天天噜日日噜视频麻豆| 色综合88| 中文字幕精品人妻av在线| 国产精品成人av大片| 日本一区二区在线播放| 精品香蕉久久久爽爽| 亚洲高清国产品国语在线观看| 亚洲av网一区二区三区成人| 无码人妻精品一区二区三区蜜桃| 欧洲成人午夜精品无码区久久| 性做久久久久久久| 亚洲国产精品av麻豆一区| 熟女体下毛荫荫黑森林| 好吊色欧美一区二区三区四区 | 国产剧情国产精品一区| 亚洲av综合日韩精品久久久| 精华国产一区二区三区| 国产一区二区三区乱码| 亚洲自拍另类制服在线| 日本久久一区二区三区高清| 国产三级久久精品三级91| 最近免费mv在线观看动漫| 国产成人综合久久久久久| 日本一区人妻蜜桃臀中文字幕| 国产成人精品无码片区在线观看| 亚洲午夜福利在线观看| 久久精品成人亚洲另类欧美| 伊人久久大香线蕉av最新午夜| 67194熟妇人妻欧美日韩| 秒播无码国产在线观看| 国产精品三级1区2区3区| 中文字日产幕码三区的做法大全| 艳妇臀荡乳欲伦交换在线播放| 亚洲国产精品久久九色| 美女被黑人巨大入侵的的视频| 中文字幕中文有码在线| 色丁香色婷婷| 中文亚洲第一av一区二区 |