當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 學(xué)習(xí)筆記 > QT開發(fā)入門基礎(chǔ)及界面的建立原理
QT基礎(chǔ)學(xué)習(xí)=========================
第一階段
============================================================================
1. QT creater的編譯快捷鍵
(1) Qmake -project表示生成.pro文件
(2) qmake表示生成makefile
(3) make表示可執(zhí)行程序;
2. disconnect取消所有函數(shù)中指定信號與槽的鏈接;
3. 信號與槽函數(shù)的關(guān)系
(1) 參數(shù)類型必須要匹配;
(2) 信號的參數(shù)可以比槽函數(shù)多,但是不能少;
(3) 使用前提:在自己的類中必須要有宏定義,Q_OBJECT
(4) 自己的類必須是Qobject類的直接或者間接的子類
(5) widget是Qobject的子類,connect函數(shù)是Qobject中定義,所以才能使用;
4. 編譯的過程
(1) Widget.cpp編譯生成
(2) 函數(shù)利用set_up函數(shù)建立自動函數(shù)定義和鏈接關(guān)系;
=================================================================
第二課:QT界面的建立原理
=================================================================
1. 在函數(shù)中setupUI,建立槽的連接;
2. 新建UI過程
(1) 每一個控件都是一個獨(dú)立的類對象;
(2) 獨(dú)立的控件都是window窗口,設(shè)置parent = 0:
(3) 當(dāng)parent的值為其他控件的地址,則為子控件;
(4) 子控件不需要單獨(dú)顯示show函數(shù),如果父控件顯示,子控件自動顯示;
(5) Resize()大小調(diào)整
(6) Move()移動位置
(7) Setfront()設(shè)置字體;
(8) Setwindowicon()設(shè)置圖標(biāo);在此之前需要先定義qicon i(路徑名稱)
3. 理解main函數(shù)中的return a.exec():主運(yùn)行循環(huán)
(1) 防止主程序結(jié)束,重新開始循環(huán)執(zhí)行主程序;
(2) 開啟事件隊(duì)列,并且進(jìn)行事件分發(fā);
4. 幫助手冊解讀
(1) 在類的屬性中,獲取屬性函數(shù)
① 如果屬性是Bool類型,則獲取該屬性的函數(shù)名是前面加上is,部分直接以屬性名字命名;
② 如果屬性不是Bool類型,則該屬性函數(shù)名的獲取名即為屬性名本身;
(2)設(shè)置屬性加上為set;
5. Widget表示空白窗口,window表示有標(biāo)題欄的窗口,dialog表示對話框;
6. 函數(shù)的自動調(diào)用機(jī)制
(1) 當(dāng)操作系統(tǒng)接收到一種信號后,如果QT程序正在運(yùn)行狀態(tài),則QT會接收到這個信號,并且自動調(diào)用控件類中已經(jīng)定義好的函數(shù),
7. eventFilter函數(shù)
(1) 定義eventFilter函數(shù)
(2) 給控件安裝eventFilter函數(shù)安裝;
8. 事件的傳遞性
(1) 某一種控件除了在某一個控件上發(fā)生外,還會傳遞給父控件;
(2) Eventfileter函數(shù)如果返回true,則不會傳遞,默認(rèn)return false;
(3) Event->accept()作用相當(dāng)于返回false,適用于所有event;
(4) Event->ignal作用相當(dāng)于返回true;
9. 實(shí)現(xiàn)多個控件的事件觸發(fā)
(1) 在定義中用qApp來指定所有的控件;
(2) 用notify實(shí)現(xiàn)事件的分發(fā),如果需要重新定義notify函數(shù),需要在notify'中returned父類的函數(shù);
10. Postevent函數(shù)實(shí)現(xiàn)異步事件處理
11. ui中固定界面的大小方法
(1) 直接將maxsize和minsize設(shè)置成一致;
(2) 在構(gòu)造函數(shù)中,使用setfixsize( this->width, this->height)來固定大小;