版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
嵌入式系統(tǒng)的組成外圍硬件嵌入式處理器操作系統(tǒng)應用程序軟件系統(tǒng)開發(fā)環(huán)境編譯下載和調試系統(tǒng)引導中間軟件硬件系統(tǒng)linux編程基礎
編寫簡單的C語言程序,使用gcc編譯器將程序編譯為可執(zhí)行程序Qt應用程序設計
利用qt平臺,編寫可視化的GUIAPPqt應用程序的開發(fā)圖形用戶界面簡述
圖形用戶界面-GUI(GraphicUserInterface)MiniGUI是一種面向嵌入式系統(tǒng)的圖形用戶界面支持系統(tǒng),是國內做的較好的自由軟件之一.Qt-Trolltech公司最早也是最有名的產品,它最初是作為一個跨平臺(Win32、Mac、Unix)的C++GUI庫開發(fā)的,目前已經成為了一個通用的C++跨平臺類庫Qt是一個全面的C++應用程序開發(fā)框架。Qt包含一個類庫和用于跨平臺開發(fā)及國際化的工具。QT概述Qt類庫是一個擁有超過400個C++類,同時不斷擴展的庫。它封裝了用于端到端應用程序開發(fā)所需要的所有基礎結構。同時還集成數據庫,網絡,XML,國際化,OpenGL等等。QtDesigner是一個功能強大的GUI布局與窗體構造器,能夠快速開發(fā)高性能的用戶界面。
QtLinguistQt語言家,Qt的國際化工具。QtAssistantQt助手,Qt的幫助文檔。Qt/EQt/Embedded是面向嵌入式系統(tǒng)的Qt版本,是Qt的嵌入式Linux窗口,是完整的自包含C++GUI(圖形用戶界面)和基于Linux的嵌入式平臺開發(fā)工具。Qt/EmbeddedAPI可以用于多種開發(fā)項目。許多基于Qt的XWindow程序可以非常方便地移植到嵌入式版本,適用于高端PDA等產品。6QtopiaQtopia是為了Linux的PDA、智能電話和其他移動設備設計的一個全面并且可以用戶化的應用程序平臺和用戶界面。它是第一個面向嵌入式Linux的全方位應用程序開發(fā)平臺,它可以并且已經應用于眾多的基于Linux的PDA(個人數字助理)設備和智能電話。
Qt源碼下載Qt源碼與工具下載地址:http://download.qt.io/archive/Qt代碼和開發(fā)工具各個版本混亂,總的可以分為不同操作系統(tǒng)的pc版本的和開發(fā)板運行版本。pc的開發(fā)環(huán)境:5.0版本以前沒有集成的開發(fā)環(huán)境,需要從命令行輸入命令進行編譯和運行。從5.0版本開始就按照操作系統(tǒng)分別下載pc版本的進行安裝,集成開發(fā)環(huán)境qtcreator。嵌入式開發(fā)板的代碼統(tǒng)一為qt-everywhere-opensource。從Qt5.15開始,開源版本,無論是不是LTS,不再提供編譯后的獨立安裝包,只能在線安裝。Qt助手C++初識面向對象編程(Object-orientedProgramming,OOP)C++,JAVA等主流語言都是OOPOOP的重要概念:類-class,每個類都有自己的屬性,這些屬性稱為成員,對成員的處理方法稱為成員函數。重點掌握類的使用,理解類的繼承。12每一個實體都是對象。具有相同屬性和行為的對象集合成類(class)。類是對象的抽象,而對象是類的具體實例(instance)。
按鈕對象:按鈕的內容、大小,按鈕的字體、圖案等。針對按鈕的各種操作:單擊、雙擊、拖動等。丐幫弟子:打狗棍,袋子,補丁衣服。打狗棍法…。屬性:靜態(tài)特征行為:動態(tài)特征類是一種復雜的數據類型,它是將不同類型的數據和與這些數據相關的運算封裝在一起的集合體。inta,b;ButtonbutA,butB;13class
類名{private:
成員數據;
成員函數;public:
成員數據;
成員函數;protected:
成員數據;
成員函數;};class
car{public:
intweight;intlength;intwidth;};分號不能少類的定義-先定義,后使用屬性:使用成員數據/成員變量表示行為:成員函數,對數據的操作類名:carpublic表示下面的成員或函數都是類外可以訪問的成員變量class的實例化對車定義一個類#include<iostream>usingnamespacestd;class
car{public:intweight;intlength;intwidth;};intmain(){
car
a_car;
cout<<"inputthecar’slength!\n";//printf("inputthecar'slength!\n");
cin>>a_car.length;//scanf("%d",&(a_car.length));
cout<<"inputthecar'swidth!\n";cin>>a_car.width;cout<<"\nlength:"<<a_car.length<<"\nwidth:"<<a_car.width<<endl;//printf("\nlength:%d\nwidth:%d\n",a_car.length,a_car.width,);}相當于stdio.h定義一個變量a_car,類型為car因為length和width都是public,因此可以通過變量直接訪問。public改成private試試看?program.cpp編譯命令:g++-oprogramprogram.cpp類的成員函數#include<iostream>usingnamespacestd;class
car{public:intweight;intlength;intwidth;voidcal_weight(void);};voidcar::cal_weight(void){
weight=length*(this->width)*100;}成員函數內部直接使用類中的成員變量;也可以加上this->this表示當前的對象的指針成員函數的定義;表示cal_weight是car的成員函數,不能隨意調用成員函數聲明,放在public下表示什么?類的成員函數的使用intmain(){cara_car;
cout<<"inputthecar’slength!\n";
cin>>a_car.length;
cout<<"inputthecar'swidth!\n";cin>>a_car.width;
a_car.cal_weight();cout<<"\nlength:"<<a_car.length<<"\nwidth:"<<a_car.width<<endl;
cout<<"weight:"<<a_car.weight<<endl;}使用成員函數cal_weight()類的成員函數的使用#include<iostream>usingnamespacestd;class
car{public:intweight;intlength;intwidth;voidcal_weight(void);
void
print_data(void);};voidcar::cal_weight(void){
weight=length*width*100;}voidcar::print_data(){cout<<"\nlength:"<<length<<"\nwidth:"<<
width<<endl;cout<<"weight:"<<
weight<<endl;}intmain(){cara_car;
cout<<"inputthecar’slength!\n";
cin>>a_car.length;
cout<<"inputthecar'swidth!\n";cin>>a_car.width;a_car.cal_weight();a_car.print_data();}通過成員函數print_data封裝成員變量,減少對外部成員變量的處理class的認識#include<iostream>usingnamespacestd;class
car{private:intweight;intlength;intwidth;public:voidcal_weight(void);voidprint_data(void);voidset_data(void);};voidcar::cal_weight(void){
weight=length*width*100;}voidcar::print_data(){cout<<"\nlength:"<<length<<"\nwidth:"<<
width<<endl;cout<<"weight:"<<
weight<<endl;}voidcar::set_data(){
cout<<"inputthecar’slength!\n";
cin>>length;//注意這里沒有a_car
cout<<"inputthecar'swidth!\n";cin>>width;}intmain(){cara_car;a_car.set_data();a_car.cal_weight();
a_car.print_data();}增加成員函數set_data,至此,所有的成員變量處理可以直接在類中完成,成員直接變?yōu)閜rivate,外部不可訪問#include<iostream>usingnamespacestd;class
car{private:intweight;intlength;intwidth;public:car();~car();voidcal_weight(void);voidprint_data(void);voidset_data(void);};car::car(){weight=0;length=0;width=0;}car::~car(){cout<<"thisis~car,bye!\n";}voidcar::cal_weight(void){……}voidcar::print_data(){……}voidcar::set_data(){…….}intmain(){cara_car;a_car.print_data();
a_car.set_data();a_car.cal_weight();
a_car.print_data();}類的構造函數和析構函數構造函數:函數名與類名相同,該函數不需要調用,自動會在定義變量cara_car;時自動調用析構函數:~car();用于釋放成員函數申請的資源,無需調用。任務一1、建議一個矩形類(rect),成員為長,寬,成員函數共有4個:構造函數,輸入數據,計算面積和顯示面積。主程序調用該類,可從鍵盤輸入長、寬,計算和顯示面積。類的繼承#include<iostream>usingnamespacestd;class
car{private:intweight;intlength;intwidth;public:car();voidcal_weight(void);voidprint_data(void);voidset_data(void);};car::car(){weight=0;length=0;width=0;}voidcar::cal_weight(void){
weight=length*width*100;}voidcar::print_data(){…….}voidcar::set_data(){
……}classtruck:publiccar{};intmain(){
car
a_car;truckb_car;a_car.set_data();a_car.cal_weight();
a_car.print_data();
b_car.set_data();
b_car.cal_weight();b_car.print_data();}class新類名:public父類新的類完全擁有父類的特點,還可以發(fā)展自己的新成員和新函數。類的繼承……classtruck:publiccar//貨車{public:truck();~turck();voidprint_hp();//打印馬力數據private:inthorsepower;//馬力};truck::truck(){horsepower=10;}truck::~truck(){}voidtruck::print_hp(){
cout<<"horsepower:<<horsepower<<endl;}intmain(){
car
a_car;truckb_car;a_car.set_data();a_car.cal_weight();
a_car.print_data();
b_car.set_data();
b_car.cal_weight();b_car.print_data();
b_car.print_hp();}子類可以有自己的成員變量和函數子類的實例可以使用父類的公有變量和函數父類不能使用子類自己的成員變量和函數類的繼承……classtruck:publiccar//貨車{public:truck();~turck();voidprint_hp();//打印馬力數據voidset_hp();private:inthorsepower;//馬力};truck::truck(){horsepower=10;}truck::~truck(){}voidtruck::set_hp();{cout<<“inputhp:\n”;cin>>hp;}voidtruck::print_hp(){
cout<<"horsepower:<<horsepower<<endl;}intmain(){
car
a_car;truckb_car;a_car.set_data();a_car.cal_weight();
a_car.print_data();b_car.set_data();b_car.cal_weight();b_car.set_hp();
b_car.print_data();b_car.print_hp();}子類可以有自己的成員變量和函數子類的實例可以使用父類的公有變量和函數父類不能使用子類自己的成員變量和函數類的繼承……classtruck:publiccar//貨車{public:truck();~turck();voidprint_hp();//打印馬力數據voidset_hp();private:inthorsepower;//馬力};…voidtruck::set_hp(){cout<<“inputhp:\n”;cin>>horsepower;}voidtruck::print_data(){car::print_data();print_hp();}voidtruck::print_hp(){
cout<<"horsepower:<<horsepower<<endl;}intmain(){
car
a_car;truckb_car;a_car.set_data();a_car.cal_weight();
a_car.print_data();b_car.set_data();b_car.cal_weight();b_car.set_hp();b_car.print_data();}子類中的函數可以與父類的函數重名,調用時會根據類型各自調用。子類調用父類的同名函數時,在函數的前面加上類型名任務二
在rect類的基礎上分別創(chuàng)建子類長方體(cuboic)和四棱錐(pyramid)兩個子類都可以增加成員變量高,增加成員函數計算體積和顯示體積,計算和顯示表面積。
主程序調用該類,可從鍵盤輸入長、寬、高。指針指針—記錄內存地址的方式明德321明德322明德323明德324地址18電子11000100110021003地址3單片機實驗室a變量#include<iostream>usingnamespacestd;intmain(){inta;
a=3;cout<<“a=”<<a<<endl;
return0;}&--取地址符b是一個指針(*),其數值是地址,該地址中放的數值類型是int查看b地址中的數值是?
int*b;cout<<“&a=”<<&a<<endl;b=&a;cout<<“b=”<<
b<<endl;cout<<“*b=”<<*b<<endl;18電子2指定b記錄的是a的地址指針—記錄內存地址的方式#include<iostream>usingnamespacestd;intmain(){inta;
a=3;cout<<“a=”<<a<<endl;
cout<<“*b=”<<<<endl;return0;}
int*b;cout<<“&a=”<<&a<<endl;b=&a;cout<<“b=”<<
b<<endl;
*b
int*b;
*b指針變量的定義:
類型*變量名稱通過指針取值:*變量*表示取值運算符。指針#include<iostream>usingnamespacestd;intmain(){inta[5]={10,20,30,40,50};
int*ptr;inti;ptr=&(a[2]);cout<<*ptr<<endl;
cout<<*(ptr+1)<<endl;cout<<(*ptr)+1<<endl;ptr++;cout<<*ptr<<endl;
*ptr=60;
for(i=0;i<5;i++)cout<<a[i]<<endl;
ptr=a;cout<<*ptr<<endl;return0;}變量指針的使用變量成員的使用方式:變量名.成員名a.length=1;a.length=2;a.cal_weight();car
a;class
car{public:intweight;intlength;intwidth;public:car();voidcal_weight(void);voidprint_data(void);voidset_data(void);};指針變量的成員使用方式:指針變量名->成員名ptra->length=1;ptra->length=2;ptra->cal_weight();car
*ptra=&a;;#include<iostream>usingnamespacestd;class
car{private:intweight;intlength;intwidth;public:car();~car();voidcal_weight(void);voidprint_data(void);voidset_data(void);};car::car(){weight=0;length=0;width=0;}car::~car(){cout<<“thisis~car,bye!\n”;}voidcar::cal_weight(void){……}voidcar::print_data(){……}voidcar::set_data(){…….}intmain(){cara;car*ptra=&a;a.set_data();a.cal_weight();a.print_data();ptra->print_data();}指針的使用a與ptrb所指向的內存是相同的內存塊內存分配new:申請一塊內存delete:釋放一塊內存使用方法:
指針變量=new類型;指針變量=new類型(初值);指針變量=new類型[num];int*p=newint;int*b=newint(100);car*ptrc=newcar;申請一塊內存,無初始值申請一塊內存,有初始值申請num個空間成功則返回內存地址值,失敗返回NULL.delete指針變量;delete[]指針變量;deletep;deleteb;deleteptrc;有申請必有釋放否則系統(tǒng)內存會耗盡!#include<iostream>usingnamespacestd;class
car{private:intweight;intlength;intwidth;public:car();~car();voidcal_weight(void);voidprint_data(void);voidset_data(void);};car::car(){weight=0;length=0;width=0;}car::~car(){cout<<“thisis~car,bye!\n”}voidcar::cal_weight(void){……}voidcar::print_data(){……}voidcar::set_data(){…….}intmain(){cara;car*ptrb=newcar;a.set_data();a.cal_weight();a.print_data();
ptrb->set_data();ptrb->cal_weight();ptrb->print_data();deleteptrb;}指針的使用a與ptrb所指向的內存是不同的內存塊a是靜態(tài)局部變量,a的空間程序結束是自動回收ptrb是動態(tài)申請的內存,必須使用delete回收空間Qt是一個全面的C++應用程序開發(fā)框架。Qt包含一個類庫。擁有超過400個C++類,同時不斷擴展的庫。它封裝了用于端到端應用程序開發(fā)所需要的所有基礎結構。QApplicationQWidgetQMainWindowQDialogQPushbutonQLabel…Qt初識部件(控件):可視化的矩形的圖形對象,如按鈕、對話框、滾動條等??梢岳斫鉃閷⒛承╊惪梢暬奖憔幊?。QWidgetQMainWindowQDialogQPushbutonQLabel…所有部件都來繼承自Qwidget。主部件:一般是一個窗口(Qwidget,QMainWindow,Qdialog等),可以用來放置其他部件。當主部件關閉則整個程序關閉。Qt初識搭建QT/Embedded的開發(fā)環(huán)境qmakeqmake是Trolltech公司用于為不同平臺和編譯器生成Makefile的工具。使用qmake工具,開發(fā)者可以根據源程序創(chuàng)建項目文件,并且由項目文件生成Makefile。不同系統(tǒng)的qt平臺有不同的qmake工具,使得開發(fā)者只需專注代碼的編寫。qmakePC端的qmake:/opt/Qt5.3.2/5.3/gcc_64/bin/qmakearm開發(fā)板的qmake:/opt/qt-4.7.1/bin/qmake在cpp源程序所在的目錄下運行對應的qmake命令,可生成對應平臺的makefile生成makefile后輸入make,可生成對應的可執(zhí)行程序最原始的Qt程序開發(fā)#include<QApplication>#include<QDialog>intmain(intargc,char*argv[]){
QApplicationapp(argc,argv);QDialogdq;
dq.show();returnapp.exec();}使用了QApplication類使用了QDialog類用于函數入口參數的處理,必須!將控制權交給qt,必須!創(chuàng)建了一個Dialog控件!顯示對話框!最原始的Qt程序開發(fā)1、生成項目文件.pro/opt/Qt5.3.2/5.3/gcc_64/bin/qmake–project2、版本控制在項目文件*.pro文件上添加一句話:greaterThan(QT_MAJOR_VERSION,4):QT+=widgets表示QT版本大于4,則需要添加widgets模塊。3、生成Makefile/opt/Qt5.3.2/5.3/gcc_64/bin/qmake4、生成可執(zhí)行程序make5、執(zhí)行程序#include<QApplication>#include<QDialog>#include<QLabel>intmain(intargc,char*argv[]){QApplicationapp(argc,argv);QDialogdq;
dq.resize(200,300);dq.setWindowTitle("hello");QLabellabel1(&dq);label1.move(20,40);label1.setText("helloeverybody!");
label1.setFont(QFont("Timers",28,QFont::Bold));
dq.show();returnapp.exec();}修改對話框的大小,標題增加一個標簽,并修改標簽的文字字體和大小最原始的Qt程序開發(fā)qtcreator中的配置qtcreator中的配置qtcreator中的配置qtcreator中的增加項目的編譯版本選擇項目的編譯版本運行環(huán)境選擇:PC端:選擇DesktopQt5.3GCC64bit開發(fā)板端:選擇Qt4.7.1調試版本:Debug發(fā)布版本:Release真正的第一個qt程序新建空項目點擊”新建項目”->其他項目->空的QT項目確定項目的存放位置以及使用的編譯器和庫版本在項目文件qt_文件上添加一句話:greaterThan(QT_MAJOR_VERSION,4):QT+=widgets表示QT版本大于4,則需要添加widgets模塊。版本控制新建main.cpp文件在main.cpp輸入代碼#include<QApplication>#include<QDialog>#include<QLabel>intmain(intargc,char*argv[]){
QApplicationapp(argc,argv);QDialogdq;dq.resize(200,300);dq.setWindowTitle("hello");QLabellabel1(&dq);label1.move(20,40);label1.setText("helloeverybody!");
label1.setFont(QFont("Timers",28,QFont::Bold));
dq.show();returnapp.exec();}請創(chuàng)建一個窗口:大小300*400,標題為info窗口中顯示兩行文字:自己的姓名自己的學號并查閱資料,兩行文字設置為不同的字體和大小QT任務1實現(xiàn)可視化的界面設計--使用QT提供的設計師界面類根據需要選擇不同的模板,并填寫類的名稱新建的對話框界面新建的類MainDialog為新建的類,頭文件為maindialog.h,源文件為maindialog.cpp對應的界面文件為maindialog.ui選中maindialog.ui可進入設計界面修改main.cpp主函數#include<QApplication>#include<QDialog>#include<QLabel>intmain(intargc,char*argv[]){QApplicationapp(argc,argv);
MainDialogdq;dq.show();returnapp.exec();}系統(tǒng)啟動的對話框改為新的類點擊編輯運行,此時應用程序改
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度酒店客房智能家電配置與售后服務合同4篇
- 二零二五版房屋互換及增值服務協(xié)議范本3篇
- 2025年私立學校新生試讀協(xié)議書(音樂特色教育)標準文本3篇
- 二零二五版新型城鎮(zhèn)化項目合同保修與跟進管理3篇
- 二零二五年度風景名勝區(qū)植被保護與養(yǎng)護合同4篇
- 二零二五年生物制藥技術合作保密及成果分享協(xié)議3篇
- 二零二五版跨境電商合伙經營服務合同下載3篇
- 2025年度航空航天鋁合金材料供應協(xié)議3篇
- 2025年度新能源汽車銷售與充電設施運營管理協(xié)議4篇
- 二零二五年度生態(tài)農業(yè)合作項目履約擔保合同正文本4篇
- 人教版小學數學(2024)一年級下冊第一單元 認識平面圖形綜合素養(yǎng)測評 B卷(含答案)
- 企業(yè)年會攝影服務合同
- 電商運營管理制度
- 二零二五年度一手房購房協(xié)議書(共有產權房購房協(xié)議)3篇
- 2025年上半年上半年重慶三峽融資擔保集團股份限公司招聘6人易考易錯模擬試題(共500題)試卷后附參考答案
- 城市公共交通運營協(xié)議
- 內燃副司機晉升司機理論知識考試題及答案
- 2024北京東城初二(上)期末語文試卷及答案
- 2024設計院與職工勞動合同書樣本
- 2024年貴州公務員考試申論試題(B卷)
- 電工高級工練習題庫(附參考答案)
評論
0/150
提交評論