qt學習筆記

Part 1基本思路

學習目標:
(熟練)使用 qt 製作符合要求的 ui

FAQ:
1)學習Qt5還是Qt4?
重要的是學習的方法而不是內容,掌握了正確的學習方法就可以很快完成另一者的學習,綜合來看,Qt4的資料較爲全面,入門起來應該比較快。

達成方式:
學會使用 assistant 找到合適的 class 和 子函數 即可
:先決條件:知道都有什麼可用的 class 和 對應的子函數
練習方式:實戰(教材結合assistant)
以熟悉 class 和 子函數 爲主


達標要求:
完成 基礎 部分
中級 部分完成一半

基本構建思路:
1、使用 designer 完成基本界面的繪製
2、添加繼承類完成信號和槽的連接

需要掌握的:
1、添加中間層的一般方法
2、常用的信號和槽

 

 

Part 2 具體方法

1、文件的劃分
1)一般對於一個功能使用兩個文件,頭文件存放聲明,實現文件存放實現
2)main 函數單獨放一個文件

2、沒有什麼功能是添加一箇中間層解決不了的,如果有就再添加一個

3、頭文件的寫法
0)頭文件本質上是充當了與外界接口的作用,其中想讓外界訪問(接入)的函數/變量使用 public, 否則使用 protected 和 private
0.5)構造函數一般是public的, 同時默認 QWidget *parent = 0
1)首先使用 #ifndef 來避免重複調用,後邊的名字爲頭文件名(全大寫,點號變爲下劃線)
2)包含頭文件時儘量不包含集成頭文件,避免程序的運行變得臃腫
3) 當使用系統自帶的基本類框架時,一般聲明一個自己的類,讓他繼承自該框架類
4)在頭文件中進行自建類的定義時也不對其成員進行定義,而是隻聲明
5)爲了能夠對自建類進行調用,首先必須包含的就是構造函數(不定義,只聲明)
6)其次是這個類需要用的的信號和槽
7)最後是涉及到的函數和變量

4、實現文件的寫法
0)實現文件的主要功能是完善頭文件中所提出的功能,因此第一件事就是完善頭文件中未定義的自建類
1)在出現顯示字符串的位置加上 tr() 以提供翻譯功能
2)在出現文本的地方使用 “&+字母” 來設置該部件的快捷鍵
3)標籤本身不提供功能,但可以爲其他沒有文字的部件設置快捷鍵(需要使用“設置夥伴”功能)
4)要想使用其他cpp文件提供的功能,必須包含與之對應的頭文件

5、designer的用法
0)用designer生成的是一個頭文件,需要寫出對應的接口(一套頭文件和實現文件)以豐富其功能並接入其他文件中去
1)創建的常見順序:
1)創建子窗口部件
2) 佈局
3)設置Tab鍵順序
4)連接信號與槽
5)實現自定義槽
2)要注意修改部件的名稱以方便隨後加入自定義槽(可以只修改後續要調用的)

6、主窗口的創建
1)主窗口與對話框的不同:
1)聲明和定義構造函數時不傳入父窗口(因爲是主窗口了, 肯定沒有父窗口)
2)mainwindow.h的結構:
1)public: 構造函數
2)protected: closeEvent()
3)private:
1)slots:要實現的功能
2)普通函數:生成窗口過程中要用到的函數
3)字段:mainwindow中用到的變量
3)mainwindow.cpp
1)類定義
1)設置主窗口
2)創建動作
3)創建菜單
4)創建上下文菜單
5)創建工具欄
6)創建狀態欄
7)設置圖標
8)其他功能
4)使用圖片
要使用圖片需要創建對應的資源文件(.qrc),並在工程文件(.pro)中加上一行 : RESOURCES = ****.qrc
5)使用內置的提示框
int r = QMessageBox::type(parent, title, message, buttons)
//type 可選 warning, information, question, critical, 決定了彈出對話框的圖案
//parent 爲父窗口
//tile, message 分別爲標題和顯示的信息
//buttons 爲窗口中提供的默認按鈕, 有 QMessage::Yes, QMessage::No, QMessage::Cancel ......
// 顯示多個按鈕用 | 分割
6)使用內置的文件對話框
QString filename = QFileDialog::getOpenFileName(parent, title, folder, filter);
//parent 爲父窗口
//title 爲標題
//folder 爲開始尋找的目錄
//filter 爲文件過濾器,格式爲 “說明 + (通配符)”, 如有多個則用\n分割
//例如: "Spreadsheet files (*.sp) \n Comma-separated values files (*.csv)"
7)去除文件名中的路徑:
QString name = QFileInfo(fullFileName).fileName();
8) 對話框的調用
1)非模態(可以掛在後臺的)
dailog = new myDialog(this); //實例化
connect(......); //建立連接
dialog->show(); //顯示窗口
dialog->raise(); //掛在頂層
dialog->activateWindow(); //激活窗口
2)模態(用完後就關閉,並且不允許切換至同應用的其他窗口)
myDialog dialog(this); //實例化
if(dialog.exec()){ //運行(顯示窗口)
connect(......); //建立連接
}
delete dialog; //釋放內存

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章