




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第2次課MeeGo開發(fā)流程與開發(fā)基礎
內(nèi)容嵌入式應用開發(fā)流程嵌入式應用開發(fā)環(huán)境嵌入式應用開發(fā)流程嵌入式開發(fā)工具鏈MeeGo的開發(fā)工具鏈宿主機與仿真機環(huán)境配置QT知識
Qt介紹Qt安裝基于QT的HelloWorld示例程序Qt中主要類的介紹Qt的信號槽機制Qt中主要控件介紹一、嵌入式應用開發(fā)流程嵌入式應用開發(fā)環(huán)境交叉開發(fā)編程語言嵌入式應用開發(fā)流程嵌入式開發(fā)工具鏈
交叉開發(fā)通用計算機的軟件開發(fā)一般都是以本地(Native)編譯或開發(fā)的方式進行,嵌入式系統(tǒng)一般不支持本地環(huán)境開發(fā),其軟件開發(fā)通常采用交叉(Cross)開發(fā)的方式。交叉開發(fā)環(huán)境建立在宿主機(Host)上,宿主機又稱開發(fā)機,一般是一臺通用計算機,如PC。對應嵌入式系統(tǒng)稱為目標(Target)機。目標機指各式各樣的嵌入式設備,例如手機、掌上電腦等;或者是嵌入式廠商提供的一套專用于開發(fā)的評估板(evaluationboard),所以又稱開發(fā)板;甚至是基于軟件的模擬器。開發(fā)時使用宿主機上的交叉編譯、匯編和鏈接工具形成可在目標機上執(zhí)行的二進制代碼,然后把可執(zhí)行文件下載到目標機上運行。嵌入式系統(tǒng)開發(fā)過程中不僅編譯(包括鏈接等步驟)采用交叉的方式,調(diào)試也常采用交叉的方式。交叉開發(fā)采用交叉開發(fā)的原因主要原因在于目標機上往往無法進行有效的本地編譯。目標機硬件本身在開發(fā)過程中還不能使用或還不夠穩(wěn)定;目標機平臺上缺乏完整的本地編譯工具、環(huán)境;目標機系統(tǒng)本身性能不夠?qū)е戮幾g太慢。嵌入式系統(tǒng)的軟件編譯,與Windows開發(fā)不一樣,不僅要編譯應用程序,還要編譯相應的依賴庫、操作系統(tǒng)內(nèi)核等。所以一次完整的編譯非常費時。而從硬件角度,決定編譯速度的主要因素是CPU速度、內(nèi)存容量和文件系統(tǒng)I/O速度。而這些方面在嵌入式系統(tǒng)上往往都要比PC差很多。這樣會造成目標機系統(tǒng)上進行本地編譯效率低下。綜合以上多方面因素的考慮,嵌入式系統(tǒng)開發(fā)一般都采用交叉開發(fā)方式,如交叉編譯(包括交叉鏈接)、交叉調(diào)試等。交叉開發(fā)宿主機和目標機的連接一般通過串口、并口、USB或以太網(wǎng)等連接線進行連接。交叉開發(fā)過程在宿主機上會安裝用于嵌入式軟件開發(fā)的一系列工具集,例如代碼編輯工具、編譯器、連接器、調(diào)試工具、軟件配置管理工具等。開發(fā)者在宿主機一端完成代碼編寫和調(diào)試。
交叉開發(fā)宿主機和目標機的差異體系結構的不同。宿主機和目標機通常是異構的。宿主機一般采用x86體系結構,但是目標機的體系結構則可能非x86的,如是ARM、MIPS、PowerPC等各式各樣。處理能力不同。通常宿主機的處理速度、存儲容量等會遠遠大于目標機。運行的操作系統(tǒng)不同。宿主機一般運行通用操作系統(tǒng),而目標機通常運行各種嵌入式操作系統(tǒng)。輸入輸出方式不同。相對宿主機,目標機的輸入輸出功能可能比較單一。編程語言本書采用的主要語言由于C/C++擁有便于底層編程等諸多優(yōu)點,目前C/C++為大多數(shù)嵌入式系統(tǒng)開發(fā)的首選語言??紤]到現(xiàn)實的發(fā)展狀況,我們在后續(xù)章節(jié)的應用開發(fā)中首選語言也是C/C++。嵌入式應用開發(fā)流程典型的開發(fā)流程示意圖編碼階段構建階段部署階段調(diào)優(yōu)階段嵌入式應用開發(fā)流程
開發(fā)流程主要分為如下幾個階段:1.編碼階段編碼階段是軟件開發(fā)的開始,其任務是編寫軟件的源代碼代碼,使用的工具是各種編輯器。2.構建階段構建階段的任務是把代碼轉(zhuǎn)化成可以在嵌入式硬件上可執(zhí)行程序的過程。此階段包括包括編譯,鏈接、定址和打包等步驟。3.部署階段部署是把可執(zhí)行的運行時映像或可執(zhí)行文件部署到嵌入式設備上,讓嵌入式設備在系統(tǒng)上電后可以啟動并加載開發(fā)者編寫的代碼。4.調(diào)優(yōu)階段(調(diào)試、優(yōu)化階段)此階段主要是對軟件進行調(diào)試和性能優(yōu)化。調(diào)試:即使再有經(jīng)驗的軟件工程師,要編寫完全沒有錯誤的程序也是不可能的。嵌入式軟件調(diào)試的效率都比較低,因為即使改動一行代碼,都可能需要把編譯、鏈接、重定位、燒寫、下載等步驟完整走一遍,這也是調(diào)優(yōu)階段最顯著的特點。快速地定位到問題可以節(jié)省大量的時間。嵌入式應用開發(fā)流程4.調(diào)優(yōu)階段(調(diào)試、優(yōu)化階段)優(yōu)化對于軟件產(chǎn)品最低目標是能正確的運行,還需要優(yōu)化,優(yōu)化目標主要包括是速度性能、功耗性能、空間性能等方面,達到運行更快,更節(jié)能,占用空間更小等目的。借助工具分析程序代碼,精確分析性能瓶頸,據(jù)此引導和建議開發(fā)者進行改進,此過程常稱為代碼剖析(codeprofiling),對應的工具常常稱為剖析器(profiler)或性能分析器(performanceanalyzer)、Intel的VTune。典型的開發(fā)工具鏈工具鏈的概念在嵌入式軟件開發(fā)的各個階段都相應的工具幫助用戶來完成其工作,這些工具形成與開發(fā)流程對應的工具鏈(Toolchain),又稱工具集。開發(fā)階段功能描述典型工具例子編輯編輯程序的源代碼Vi、Emacs、Windows記事本編譯、鏈接將源程序編譯、鏈接成可執(zhí)行的二進制文件gcc、icc燒寫把可執(zhí)行的二進制程序燒寫到嵌入式系統(tǒng)內(nèi)部的ROM或Flash中,以便系統(tǒng)開機即運行。JFlash、SJflash調(diào)試在程序運行的時候動態(tài)地跟蹤程序的運行狀態(tài)。查看程序的執(zhí)行情況,以找出程序錯誤的原因。gdb、idb、KernelDebugger優(yōu)化分析程序性能,幫助開發(fā)者建立運行更快,更節(jié)能,占用空間更小程序gprof、VTune測試幫助測試人員自動尋找程序中存在的錯誤,減少人力花費CETK驗證驗證程序邏輯上的正確性和常見錯誤,特別是對某些難于測試和調(diào)試的環(huán)境ApplicationVerifier模擬/仿真模擬和仿真嵌入式軟硬件運行環(huán)境,便于開發(fā)者開發(fā)和調(diào)試VmWare、DeviceEmulator嵌入式軟件開發(fā)典型工具典型的開發(fā)工具鏈Moblin平臺下的工具集在Linux、Moblin平臺下最有名的工具集是GNU和Intel兩家。由于GNU工具集的跨平臺、開放性、使用廣、與其他工具兼容等特點,使得其成為嵌入式應用開發(fā)的首選工具.GNU工具鏈GNU的開發(fā)工具都是免費的,遵循GPL協(xié)議,任何人都可以從網(wǎng)上獲取。同樣GNU也為嵌入式系統(tǒng)、x86系統(tǒng)下的軟件開發(fā)提供了完整的工具鏈。這些工具包含編譯器、匯編器、鏈接器、調(diào)試工具等。這些工具它們可以以命令行形式單獨運行,也可以集成到Eclipse等集成開發(fā)環(huán)境中。功能組件說明編輯Vi、Emacs、Ed等文本編輯器,用于編輯源代碼編譯、鏈接gcc一組多種編程語言的編譯器調(diào)試gdb調(diào)試器優(yōu)化gprof分析程序性能,幫助開發(fā)者建立運行更快的程序項目管理make自動管理軟件編譯系統(tǒng)構建autotools構建項目所需的材料和文件典型的開發(fā)工具鏈GNU工具鏈生成目標文件的幾種途徑方法一:使用gcc命令分別編譯、鏈接各源代碼文件,生成可執(zhí)行的目標文件。方法二:用戶編寫makefile等配置文件,然后用make一步生成可執(zhí)行的目標文件。方法三:使用系統(tǒng)構建自動工具autotools制作makefile等配置文件,然后用make一步生成可執(zhí)行的目標文件。二、MeeGo的開發(fā)工具鏈交叉開發(fā):宿主機:生成目標可執(zhí)行文件和調(diào)試的機器,一般是一臺PC目標機:MeeGo運行平臺,手機、上網(wǎng)本或者仿真器(qemu)MeeGo交叉開發(fā)的實際環(huán)境MeeGo交叉開發(fā)的仿真環(huán)境仿真仿真的情景仿真(1)仿真(2)二、MeeGo的開發(fā)工具鏈幾個術語1、QEMUMeeGo的虛擬機(emulator)仿真環(huán)境之一或者叫仿真器。2、Xephyr(/SDK/Docs/1.1/MeeGo_SDK_with_Xephyr)Xephyr是一種運行Linux下的MeeGo仿真器。3、MADDEMADDE(MeeGoApplicationDevelopandDebugEnvironment(background))isatoolthatassistsinthedownloadandinstallationoftheTarget.(MeeGo應用開發(fā)與調(diào)試環(huán)境)是一個幫助下載與安裝目標機的工具。4、mad-admin"mad-admin"istheMADDEcommand-linetool.YoucaninstallmultipleTargetsandswitcheasilybetweentheminQtCreator(describedlater).——我的理解:mad-admin是一個安裝MADDE和查看其安裝信息的命令行工具。5、xhost+accesscontroldisabled,clientscanconnectfromanyhost:開放全部用戶和IP地址用戶遠程使用Xserver的權限:二、MeeGo的開發(fā)工具鏈3、宿主機Qt開發(fā)工具鏈:$ls-l/opt/meego/meego-sdk-qt/bin1、InstallingtheMeeGoSDK——安裝對應CPU架構的編譯工具鏈(1)$sudoapt-getinstallmeego-sdk2、InstallMeeGoTarget——安裝對應CPU架構的編譯工具鏈(2)$sudomad-admincreate-fmeego-netbook-ia32-1.1用來下載下載meego-core-ia32-madde-sysroot-1.1-fs.tar.bz2CreateaMeeGotargetusingMADDE三、宿主機與仿真機環(huán)境配置2、配置QTCreator1、打開上網(wǎng)本仿真器(目標機)$madremote-rmeego-netbook-ia32-qemu-1.1.20101031.2037-sda-runtimepoweron登錄到目標機里面去:$sshmeego@–p6666進入目標機(不管是仿真器還是實際機都要執(zhí)行如下步驟),運行如下命令:$xhost+3、配置工程的build環(huán)境4、編譯生成MeeGo目標文件在QTCreator環(huán)境里面打開一個.pro工程文件5、選擇目標機Run環(huán)境6、部署運行與停止運行四、QT介紹Qt介紹Qt安裝基于QT的HelloWorld示例程序Qt中主要類的介紹Qt的信號槽機制Qt中主要控件介紹21Qt介紹Qt是跨平臺的應用程序和UI框架,包括跨平臺類庫集成開發(fā)環(huán)境跨平臺IDE一次性開發(fā)可在不同桌面和嵌入式操作系統(tǒng)部署22Qt特征一面向?qū)ο驫t具有模塊設計和注重軟件構件或元素的可重用性的特點構件支持Qt提供信號signal和槽slot的概念,支持對象之間在彼此不知道對方的情況下合作,使得Qt適合構件編程友好的聯(lián)機幫助Qt提供了大量的聯(lián)機參考文件23Qt特征二便利性Qt是跨平臺的GUI工具包,對編程者隱藏了處理不同窗口系統(tǒng)時的潛在問題國際化Qt為本地化應用提供了完全的支持,所有用戶界面文本都可以基于消息翻譯表被翻譯成各國語言24Qt特征三豐富的API函數(shù)Qt為開發(fā)者提供了大量的函數(shù)可用戶化外觀Qt支持主題,基于Qt的應用程序能夠在Windows外觀,Motif外觀以及其他一些用戶外觀主題之間切換完整的組件工具Qt編程的基本模塊叫做組件,Qt含有用來創(chuàng)建專業(yè)外觀用戶界面需要的所有組建25Qt介紹WhousesQt?WritecodeoncetotargetmultipleplatformsCreateamazinguserexperienceDomorewithlessandfasterBlendwebandnativecodeinasingleapplication26QtSDKQtSDK27Qt中主要的類介紹QObject QObject類是所有能夠處理signal,slot和事件的Qt對象的基類,原型如下:QObject::QObject(Qobject*parent=0,constchar*name=0) 在上面的函數(shù)中,如果parent為0則構造一個無父的對象;如果對象是一個組件,則它會成為頂層窗口。28Qt中主要的類介紹2.QApplicationQApplication類負責GUI應用程序的控制流和主要的設置,它包括主事件循環(huán)體,負責處理和調(diào)度所有來自窗口系統(tǒng)和其他資源的事件處理應用程序的開始,結束以及會話管理QApplication是QObject類的子類29Qt中主要的類介紹3.QwidgetQWidget是所有用戶接口對象的基類,繼承了QObject類的屬性組件是用戶界面的單元組成部分,接收鼠標,鍵盤和從其它窗口系統(tǒng)來的事件QWidget類有很多成員函數(shù),但一般不直接使用,而通過子類繼承來使用其函數(shù)功能QWidget是QObject類的子類30信號和槽信號和槽機制是Qt的一個主要特征,是Qt與其它工具包最不相同的部分。在圖形用戶界面編程中,經(jīng)常會出現(xiàn)窗口的一個部件發(fā)生的變化會被通知給另一個部件。Qt采用信號和槽實現(xiàn)對象部件之間的通信31信號和槽的聲明一 在Qt程序設計中,包含signals和slot的類都要加上Q_OBJECT的定義。下面給出一個在類中定義signal和slot的例子classStudent:publicQobject{
Q_OBJECT public: Student(){myMark=0;} intgetMark()const{returnmyMark;}
publicslots: voidsetMark(intnewMark);
signals: voidmarkChanged(intnewMark); private: intmyMark;}32信號和槽的聲明二Signal的發(fā)出一般在事件的處理函數(shù)中,利用emit發(fā)出signal,下面的例子中在事件處理結束后發(fā)出signal
voidStudent::setMark(intnewMark){ if(newMark!=myMark){ myMark=newMark;
emitmarkChanged(myMark); }}33信號和槽的連接一 在signal和slot聲明以后,需要使用connect()函數(shù)將它們連接起來。Connect()函數(shù)屬于QObject類的成員函數(shù),能夠連接signal和slot,也能夠連signal和signal。函數(shù)原型如下
boolconnect(constQObject*sender,constchar*signal,constQObject*receiver,constchar*slot)其中第一個和第三個參數(shù)指出signal和slot屬于的對象或組件34信號和槽的連接二 使用connect()函數(shù)進行連接的時候,還需要用到SIGNAL()和SLOT()兩個宏,使用方法如下:
QLabel*label=newQLabel; QScrollBar*scroll=newQScrollBar; QObject::connect(scroll,SIGNAL(valueChanged(int)),label,SLOT(setNum(int)));35信號和槽的連接方式一同一個信號連接到多個槽
connect(slider,SIGNAL(valueChanged(int)),spinBox,SLOT(setValue(int))); connect(slider,SIGNAL(valueChanged(int)),this,SLOT(updateStatusBarIndicator(int)));多個信號連接到同一個槽
Connect(lcd,SIGNAL(overflow()),this,SLOT(handleMathError()));Connect(calculator,SIGNAL(divisionByZero()),this,SLOT(handleMathError()));36信號和槽的連接方式二一個信號連接到另外一個信號
connect(lineEdit,SIGNAL(textChanged(constQstring&)),this,SLOT(updateRecord(constQstring&)))取消一個連接
disconnect(lcd,SIGNAL(overflow()),this,SLOT(handleMathError())); 取消一個連接不是很常用,因為Qt會在一個對象被刪除后自動取消這個對象所包含的所有連接37Qt安裝Qt下載/downloads38Qt安裝下載安裝文件Qt_SDK_Lin32_offline_v1_1_beta_en.run,在linux上安裝步驟如下:1.添加執(zhí)行權限chmodu+xQt_SDK_Lin32_offline_v1_1_beta_en.run2.運行安裝文件./Qt_SDK_Lin32_offline_v1_1_beta_en.run3.添加環(huán)境變量將Qt安裝目錄下的bin目錄加入到環(huán)境變量PATH中39HelloWorld程序?qū)嵗齽?chuàng)建目錄mkdir/examples/hello創(chuàng)建源文件touchhello.cpp編寫源文件vihello.cpp40HelloWorld程序?qū)嵗袚Q到hello目錄cd/examples/hello創(chuàng)建平臺獨立的工程文件projectfileqmake–project創(chuàng)建平臺獨立的Makefile文件qmake編譯工程make運行程序./hello41Qt對話框?qū)υ捒蚴且环N特殊的窗口,一般用來提供反饋信息或從用戶獲取輸入。給用戶提供了同應用程序進行交互的方式42Qt對話框模態(tài)對話框最普遍的對話框。在未消失前用戶不能夠與同一個應用程序的其他窗口進行交互,直到該對話框關閉。非模態(tài)對話框當對話框打開的同時,用戶還可與同一應用程序的其他窗口進行交互。43Qt對話框Qt對話框的類層次結構圖44幾種Qt內(nèi)置對話框介紹顏色對話框QColorDialog,允許用戶選擇設置顏色錯誤對話框QErrorDialog,顯示錯誤信息文件對話框QFileDialog,允許用戶選擇一個或多個文件或目錄字體對話框QFontDialog,允許用戶選擇、設置字體輸入對話框QInputDialog,允許用戶輸入文本信息頁設置對話框QPageSetupDialog,可配置與打印相關的頁面設置進度對話框QProgressDialog,指示出一項操作的工作進度,而且提示用戶該操作是否停滯打印對話框QPrintDialog,配置打印機相關選項45幾種Qt內(nèi)置對話框介紹顏色對話框QColorDialog,允許用戶選擇設置顏色錯誤對話框QErrorDialog,顯示錯誤信息文件對話框QFileDialog,允許用戶選擇一個或多個文件或目錄字體對話框QFontDialog,允許用戶選擇、設置字體輸入對話框QInputDialog,允許用戶輸入文本信息頁設置對話框QPageSetupDialog,可配置與打印相關的頁面設置進度對話框QProgressDialog,指示出一項操作的工作進度,而且提示用戶該操作是否停滯打印對話框QPrintDialog,配置打印機相關選項46查找對話框示例通過一個簡單的查找對話框的實現(xiàn)了解Qt中對話框的創(chuàng)建過程,布局管理,信號和槽機制以及一些簡單控件的使用47查找對話框示例頭文件finddialog.h1#ifndefFINDDIALOG_H2#defineFINDDIALOG_H3#include<QDialog>4classQCheckBox;5classQLabel;6classQLineEdit;7classQPushButton;8classFindDialog:publicQDialog9{ 10Q_OBJECT11public: 12FindDialog(QWidget*parent=0);48查找對話框示例13signals: 14voidfindNext(constQString&str,Qt::CaseSensitivitycs); 15voidfindPrevious(constQString&str,Qt::CaseSensitivitycs);16privateslots: 17voidfindClicked(); 18voidenableFindButton(constQString&text);19private: 20QLabel*label; 21QLineEdit*lineEdit; 22QCheckBox*caseCheckBox; 23QCheckBox*backwardCheckBox; 24QPushButton*findButton; 25QPushButton*closeButton;26};27#endif
49查找對話框示例12行FindDialog的構造函數(shù)是典型的Qt窗口部件類的定義方式。Parent參數(shù)指定了父窗口部件。該參數(shù)默認值是一個空指針,意味著該對話框沒有父對象。13行開始的signal部分聲明了當用戶單擊Find按鈕時對話框發(fā)出的兩個信號。50查找對話框示例1#include<QtGui>2#include"finddialog.h"3FindDialog::FindDialog(QWidget*parent)4:QDialog(parent)5{6label=newQLabel(tr("Find&what:"));7lineEdit=newQLineEdit;8label->setBuddy(lineEdit);9caseCheckBox=newQCheckBox(tr("Match&case"));10backwardCheckBox=newQCheckBox(tr("Search&backward"));11findButton=newQPushButton(tr("&Find"));12findButton->setDefault(true);13findButton->setEnabled(false);14closeButton=newQPushButton(tr("Close"));51查找對話框示例15connect(lineEdit,SIGNAL(textChanged(constQString&)),16this,SLOT(enableFindButton(constQString&)));17connect(findButton,SIGNAL(clicked()),18this,SLOT(findClicked()));19connect(closeButton,SIGNAL(clicked()),20this,SLOT(close()));
52查找對話框示例通過connect函數(shù)實現(xiàn)了信號和槽的連接只要行編輯器中的文本發(fā)生變化,就會調(diào)用私有槽enableFindButton當用戶單擊Find按鈕時,會調(diào)用findClicked私有槽當用戶單擊Close時,對話框關閉53查找對話框示例21QHBoxLayout*topLeftLayout=newQHBoxLayout;22topLeftLayout->addWidget(label);23topLeftLayout->addWidget(lineEdit);24QVBoxLayout*leftLayout=newQVBoxLayout;25leftLayout->addLayout(topLeftLayout);26leftLayout->addWidget(caseCheckBox);27leftLayout->addWidget(backwardCheckBox);28QVBoxLayout*rightLayout=newQVBoxLayout;29rightLayout->addWidget(findButton);30rightLayout->addWidget(closeButton);31rightLayout->addStretch();32QHBoxLayout*mainLayout=newQHBoxLayout;33mainLayout->addLayout(leftLayout);34mainLayout->addLayout(rightLayout);35setLayout(mainLayout);36setWindowTitle(tr("Find"));37setFixedHeight(sizeHint().height());38}
54查找對話框示例Qt提供了布局管理器布局子窗口部件通過QHBoxLayout,QVBoxLayout和QGridLayout這三個布局的不同嵌套組合,就可以構建出相當復雜的對話框。55查找對話框示例39voidFindDialog::findClicked()40{41QStringtext=lineEdit->text();42Qt::CaseSensitivitycs= 43caseCheckBox->isChecked()?Qt::CaseSensitive:Qt::CaseInsensitive; 44if(backwardCheckBox->isChecked()){ 45emitfindPrevious(text,cs); 46}else{ 47emitfindNext(text,cs); 48}49}50voidFindDialog::enableFindButton(constQString&text)51{ 52findButton->setEnabled(!text.isEmpty());53}
56查找對話框示例以上兩個函數(shù)是對話框中用到的槽當用戶單擊Find按鈕時,就會調(diào)用findClicked槽。而該槽會發(fā)射findPrevious或findNext信號,這取決于Searchbackward選項的取值只要用戶改變了行編輯器中的文本,就會調(diào)用enableFindButton槽。如果在行編輯器中有文本,該槽就會啟用Find按鈕,否則它會禁用Find按鈕57查找對話框示例創(chuàng)建main.cpp文件測試FindDialog窗口部件1#include<QApplication>2#include"finddialog.h"3intmain(intargc,char*argv[])4{ 5QApplicationapp(argc,argv); 6FindDialog*dialog=newFindDialog; 7dialog->show(); 8returnapp.exec();9}
58Qt主窗口介紹應用程序的主窗口提供了用于構建應用程序用戶界面的框架主窗口一般包括菜單欄,工具欄,狀態(tài)欄,中央窗口部件等子控件在Qt中,通過子類化QMainWindow可以創(chuàng)建一個應用程序的主窗口59Qt主窗口介紹60Qt主窗口介紹下面通過一個簡單的代碼分析了解Qt中主窗口的創(chuàng)建過程實現(xiàn)主窗口的源代碼分別放在mainwindow.h和mainwindow.cpp中61Qt主窗口介紹Mainwindow.hclassMainWindow:publicQMainWindow{Q_OBJECTpublic:MainWindow(QWidget*parent=0);~MainWindow();privateslots:voidnewFile();voidopenFile();voidcut();voidcopy();private:voidcreateActions();voidcreateMenus();voidcreateStatusBar();voidcreateToolsBar();62Qt主窗口介紹private:QMenu*fileMenu;QMenu*editMenu;QAction*newAction;QAction*openAction;QAction*cutAction;QAction*copyAction;QToolBar*fileToolBar;QToolBar*editToolBar;};63Qt主窗口介紹在頭文件中,將MainWindow類定義為QMainWindow的子類。像File->New這樣的菜單項,在MainWindow中被實現(xiàn)為私有槽64Qt主窗口介紹mainwindow.cppMainWindow::MainWindow(QWidget*parent):QMainWindow(parent){createActions();createMenus();createToolsBar();createStatusBar();}MainWindow類的構造函數(shù),通過調(diào)用類的私有函數(shù)createActions();createMenus();createToolsBar();createStatusBar();分別創(chuàng)建主窗口的菜單欄,工具欄和狀態(tài)欄65菜單欄和工具欄Qt通過動作的概念簡化了菜單和工具欄的編程一個動作action就是一個可以添加到任意數(shù)量的菜單和工具欄上的項創(chuàng)建菜單和工具欄一般包括如下步驟:創(chuàng)建并設置動作創(chuàng)建菜單并把動作添加到菜單上創(chuàng)建工具欄并把動作添加到工具欄上66菜單欄和工具欄創(chuàng)建動作voidMainWindow::createActions(){//actionsinfileMenunewAction=newQAction(tr("&New"),this);connect(newAction,SIGNAL(triggered()),this,SLOT(newFile()));openAction=newQAction(tr("&Open"),this);connect(openAction,SIGNAL(triggered()),this,SLOT(openFile()));//actionsineditMenucutAction=newQAction(tr("&Cut"),this);connect(cutAction,SIGNAL(triggered()),this,SLOT(cut()));copyAction=newQAction(tr("&Copy"),this);connect(copyAction,SIGNAL(triggered()),this,SLOT(copy()));}67菜單欄和工具欄創(chuàng)建菜單并將動作添加到菜單上voidMainWindow::createMenus(){fileMenu=menuBar()->addMenu(tr("&File"));fileMenu->addAction(newAction);fileMenu->addAction(openAction);editMenu=menuBar()->addMenu(tr("&Edit"));editMenu->addAction(cutAction);editMenu->addAction(copyAction);}68菜單欄和工具欄創(chuàng)建工具欄并將動作添加到工具欄上voidMainWindow::createToolsBar(){fileToolBar=addToolBar(tr("&File"));fileToolBar->addAction(newAction);fileToolBar->addAction(openAction);editToolBar=addToolBar(tr("&Edit"));editToolBar->addAction(cutAction);editToolBar->addAction(copyAction);}69狀態(tài)欄創(chuàng)建狀態(tài)欄voidMainWindow::createStatusBar(){locationLabel=newQLabel("XY");statusBar()->addWidget(locationLabel);}70Qt主窗口介紹創(chuàng)建main.cpp文件,測試主窗口的建立intmain(intargc,char*argv[]){QApplicationa(argc,argv);MainWindoww;w.show();returna.exec();}71第一節(jié)活塞式空壓機的工作原理第二節(jié)活塞式空壓機的結構和自動控制第三節(jié)活塞式空壓機的管理復習思考題單擊此處輸入你的副標題,文字是您思想的提煉,為了最終演示發(fā)布的良好效果,請盡量言簡意賅的闡述觀點。第六章活塞式空氣壓縮機
piston-aircompressor壓縮空氣在船舶上的應用:
1.主機的啟動、換向;
2.輔機的啟動;
3.為氣動裝置提供氣源;
4.為氣動工具提供氣源;
5.吹洗零部件和濾器。
排氣量:單位時間內(nèi)所排送的相當?shù)谝患壩鼩鉅顟B(tài)的空氣體積。單位:m3/s、m3/min、m3/h第六章活塞式空氣壓縮機
piston-aircompressor空壓機分類:按排氣壓力分:低壓0.2~1.0MPa;中壓1~10MPa;高壓10~100MPa。按排氣量分:微型<1m3/min;小型1~10m3/min;中型10~100m3/min;大型>100m3/min。第六章活塞式空氣壓縮機
piston-aircompressor第一節(jié)活塞式空壓機的工作原理容積式壓縮機按結構分為兩大類:往復式與旋轉(zhuǎn)式兩級活塞式壓縮機單級活塞壓縮機活塞式壓縮機膜片式壓縮機旋轉(zhuǎn)葉片式壓縮機最長的使用壽命-
低轉(zhuǎn)速(1460RPM),動件少(軸承與滑片),潤滑油在機件間形成保護膜,防止磨損及泄漏,使空壓機能夠安靜有效運作;平時有按規(guī)定做例行保養(yǎng)的JAGUAR滑片式空壓機,至今使用十萬小時以上,依然完好如初,按十萬小時相當于每日以十小時運作計算,可長達33年之久。因此,將滑片式空壓機比喻為一部終身機器實不為過?;?葉)片式空壓機可以365天連續(xù)運轉(zhuǎn)并保證60000小時以上安全運轉(zhuǎn)的空氣壓縮機1.進氣2.開始壓縮3.壓縮中4.排氣1.轉(zhuǎn)子及機殼間成為壓縮空間,當轉(zhuǎn)子開始轉(zhuǎn)動時,空氣由機體進氣端進入。2.轉(zhuǎn)子轉(zhuǎn)動使被吸入的空氣轉(zhuǎn)至機殼與轉(zhuǎn)子間氣密范圍,同時停止進氣。3.轉(zhuǎn)子不斷轉(zhuǎn)動,氣密范圍變小,空氣被壓縮。4.被壓縮的空氣壓力升高達到額定的壓力后由排氣端排出進入油氣分離器內(nèi)。4.被壓縮的空氣壓力升高達到額定的壓力后由排氣端排出進入油氣分離器內(nèi)。1.進氣2.開始壓縮3.壓縮中4.排氣1.凸凹轉(zhuǎn)子及機殼間成為壓縮空間,當轉(zhuǎn)子開始轉(zhuǎn)動時,空氣由機體進氣端進入。2.轉(zhuǎn)子轉(zhuǎn)動使被吸入的空氣轉(zhuǎn)至機殼與轉(zhuǎn)子間氣密范圍,同時停止進氣。3.轉(zhuǎn)子不斷轉(zhuǎn)動,氣密范圍變小,空氣被壓縮。螺桿式氣體壓縮機是世界上最先進、緊湊型、堅實、運行平穩(wěn),噪音低,是值得信賴的氣體壓縮機。螺桿式壓縮機氣路系統(tǒng):
A
進氣過濾器
B
空氣進氣閥
C
壓縮機主機
D
單向閥
E
空氣/油分離器
F
最小壓力閥
G
后冷卻器
H
帶自動疏水器的水分離器油路系統(tǒng):
J
油箱
K
恒溫旁通閥
L
油冷卻器
M
油過濾器
N
回油閥
O
斷油閥冷凍系統(tǒng):
P
冷凍壓縮機
Q
冷凝器
R
熱交換器
S
旁通系統(tǒng)
T
空氣出口過濾器螺桿式壓縮機渦旋式壓縮機
渦旋式壓縮機是20世紀90年代末期開發(fā)并問世的高科技壓縮機,由于結構簡單、零件少、效率高、可靠性好,尤其是其低噪聲、長壽命等諸方面大大優(yōu)于其它型式的壓縮機,已經(jīng)得到壓縮機行業(yè)的關注和公認。被譽為“環(huán)保型壓縮機”。由于渦旋式壓縮機的獨特設計,使其成為當今世界最節(jié)能壓縮機。渦旋式壓縮機主要運動件渦卷付,只有磨合沒有磨損,因而壽命更長,被譽為免維修壓縮機。
由于渦旋式壓縮機運行平穩(wěn)、振動小、工作環(huán)境安靜,又被譽為“超靜壓縮機”。
渦旋式壓縮機零部件少,只有四個運動部件,壓縮機工作腔由相運動渦卷付形成多個相互封閉的鐮形工作腔,當動渦卷作平動運動時,使鐮形工作腔由大變小而達到壓縮和排出壓縮空氣的目的?;钊娇諝鈮嚎s機的外形第一節(jié)活塞式空壓機的工作原理一、理論工作循環(huán)(單級壓縮)工作循環(huán):4—1—2—34—1吸氣過程
1—2壓縮過程
2—3排氣過程第一節(jié)活塞式空壓機的工作原理一、理論工作循環(huán)(單級壓縮)
壓縮分類:絕熱壓縮:1—2耗功最大等溫壓縮:1—2''耗功最小多變壓縮:1—2'耗功居中功=P×V(PV圖上的面積)加強對氣缸的冷卻,省功、對氣缸潤滑有益。二、實際工作循環(huán)(單級壓縮)1.不存在假設條件2.與理論循環(huán)不同的原因:1)余隙容積Vc的影響Vc不利的影響—殘存的氣體在活塞回行時,發(fā)生膨脹,使實際吸氣行程(容積)減小。Vc有利的好處—
(1)形成氣墊,利于活塞回行;(2)避免“液擊”(空氣結露);(3)避免活塞、連桿熱膨脹,松動發(fā)生相撞。第一節(jié)活塞式空壓機的工作原理表征Vc的參數(shù)—相對容積C、容積系數(shù)λv合適的C:低壓0.07-0.12
中壓0.09-0.14
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合同范本環(huán)保技術服務合同
- 技術合同新定義:知識產(chǎn)權焦點
- 20 狼2024-2025學年新教材七年級上冊語文新教學設計(統(tǒng)編版2024)
- 14 不同環(huán)境中的植物(教學設計)-2023-2024學年科學四年級下冊青島版
- 老師教學教育心得范文
- 藝校入股合同范本
- 17古詩三首《望天門山》(教學設計)-2024-2025學年語文三年級上冊統(tǒng)編版
- 商場合同范本6
- js32-34籃球《同側步持球突破》教學設計 pdf格式 八年級上學期 體育與健康 基礎教育青年教師教學比賽資料第2套
- 2023-2024學年粵教版(2019)高中信息技術必修一《數(shù)據(jù)與計算》第六章第一節(jié)《 認識人工智能》教學設計
- 2025山東省退役軍人事務廳所屬事業(yè)單位招聘人員歷年高頻重點提升(共500題)附帶答案詳解
- 退市新規(guī)解讀-上海證券交易所、大同證券
- 教育部中國特色學徒制課題:現(xiàn)代職業(yè)教育體系建設背景下中國特色學徒制治理體系與資源配置研究
- 森林防火安全生產(chǎn)工作
- 護理工作十四五規(guī)劃
- 產(chǎn)后抑郁癥講課課件
- 人工智能背景下高職五育并舉的人才培養(yǎng)研究
- 汽車行業(yè)維修記錄管理制度
- IQC檢驗作業(yè)指導書
- 城市自來水廠課程設計
- 重慶市2024年小升初語文模擬考試試卷(含答案)
評論
0/150
提交評論