天天看點

Qt快速入門學習筆記(基礎篇)

1、關聯Qt庫。如果是分别安裝的Qt Creator和Qt庫,而不是安裝內建Qt Creator和Qt庫的SDK,則需要手動關聯Qt庫。打開工具→選項菜單,然後選擇“建構和運作”一項,再進入Qt版本頁籤。點選右上角的“添加”按鈕,然後會讓選擇qmake.exe檔案,我們在Qt(不是Qt Creator)安裝目錄的bin目錄中找到該檔案并打開。現在已經預設生成了版本資訊,我們點選确定按鈕即可。

2、關聯MinGW。在安裝Qt 4.8.6及以後的Qt 4版本時,應該按照安裝時的提示來下載下傳相應版本的MinGW,不然編譯程式無法運作。如果是Qt4版本,需要使用GCC 4.4,也就是MinGW需要是4.4版本的,其他新的版本均不可用。在Qt 4.8版本,需要下載下傳并指定GDB才能正常調試。下載下傳完MinGW和GDB以後,将其解壓到Qt的安裝目錄中,比如這裡都解壓到了C:\Qt目錄中。打開工具→選項菜單,然後選擇“建構和運作”一項,再進入工具鍊頁籤。點選右上角的“添加”按鈕,然後會讓選擇mingw32-g++.exe檔案,我們在MinGW安裝目錄的bin目錄中找到該檔案并打開。關聯GDB則進入調試器頁籤添加GDB相關exe檔案。

  如果安裝的是內建開發包QtSDK,則不需要手動關聯Qt庫、MinGW和GDB,由Qt自動關聯。

  注意:Qt5以後版本預設也包含了所有需要的工具,不存在這裡的情況,直接下載下傳安裝即可使用!

3、在建立桌面版項目時,最好選中“使用影子建構”,這樣編譯生成的檔案會和源碼分别存放,如下圖所示。編譯完成後會發現多了一個helloworld-build-desktop-Qt_4_8_1__4_8_1____目錄,裡面存放的就是編譯生成的檔案。這就是前面建立項目講到的 “使用影子建構” ,如果沒有選中這個,那麼生成的檔案就會和源碼在同一個目錄裡。

Qt快速入門學習筆記(基礎篇)

4、補充:如果要給生成的exe可執行檔案更換一個自定義圖示,可以這樣做:

(1)在項目中添加一個myapp.rc(名字可以随意)檔案,然後在裡面輸入下面一行代碼:IDI_ICON1               ICON    DISCARDABLE     "appico.ico",這裡的appico.ico就是自己的.ico圖示檔案;

(2)在.pro項目檔案中添加下面一行代碼:RC_FILE = myapp.rc,

(3)重新編譯

    如果需要更換新的圖示,建議先清理項目的編譯檔案,再重新編譯,否則可能會報錯,如下。

“:-1: 錯誤:No rule to make target `..\helloworld\myapp.rc', needed by `debug/myapp_res.o'.  Stop.”

5、在建立主視窗MainWindow項目後,打開mainwindow.ui檔案進入設計模式。在這裡可以看到界面左上角的“在這裡輸入”,我們可以在這裡添加菜單。輕按兩下“在這裡輸入”,将其更改為“檔案(&F)”,然後按下Enter鍵,效果如下圖所示。這裡的&F表明将菜單的快捷鍵設定為了Alt+ F,可以看到,實際的顯示效果中&符号是隐藏的。

Qt快速入門學習筆記(基礎篇)

同樣的方法,我們在檔案菜單中添加“建立(&N)”子菜單,效果如下圖所示。菜單後面的那個加号圖示是用來建立下一級菜單的。

Qt快速入門學習筆記(基礎篇)

Qt中的一個菜單被看做是一個Action,我們在下面的Action編輯器中可以看到剛才添加的“建立”菜單,如下圖所示。

Qt快速入門學習筆記(基礎篇)

輕按兩下該條目,會彈出編輯動作對話框,這裡可以進行各項設定,比如我們可以設定菜單的快捷鍵,點選一下快捷鍵後面的行編輯器,然後按下鍵盤上的Ctrl + N,這樣就可以将該菜單的快捷鍵設定為Ctrl + N。如下圖所示。那麼大家可能會問,既然該菜單的快捷鍵是這麼設定的,那麼前面設定的“建立(N)”中的N是什麼呢?這個可以被稱為加速鍵,就是隻有當檔案菜單處于激活(顯示)狀态時,按下N鍵才會執行建立菜單的功能。

Qt快速入門學習筆記(基礎篇)

6、Qt中可以使用資源檔案将各種類型的檔案添加到最終生成的可執行檔案中,這樣就可以避免使用外部檔案可能出現的一些問題。而且,在編譯時Qt還會将資源檔案進行壓縮,我們可能發現生成的可執行檔案比我們添加到其中的資源檔案還要小。建立完資源檔案後會自動打開該資源檔案,這裡需要先在下面添加字首,就是點選添加按鈕,然後選擇字首,預設的字首是“/new/prefix1”,這個可以随意修改(不要出現中文字元),我們這裡因為要添加圖檔,是以修改為/myImages。然後再按下添加按鈕來添加檔案,這裡最好将所有要用到的圖檔放到項目目錄中。比如我們這裡在項目目錄中建立了一個images檔案夾,然後将需要的圖示檔案粘貼進去。添加完檔案後,如下圖所示。

Qt快速入門學習筆記(基礎篇)

當添加完資源後,一定要按下Ctrl + S來儲存資源檔案,不然在後面可能無法顯示已經添加的資源。

對于添加的資源檔案,在項目目錄中可以看到,即myResources.qrc,使用寫字闆程式将其打開,可以發現它其實就是一個XML文檔:

<RCC> 

    <qresourceprefix="/myImages">

       <file>images/filenew.png</file>

       <file>images/fileopen.png</file>

       <file>images/filesave.png</file>

       <file>images/filesaveas.png</file>

       <file>images/find.png</file>

    </qresource>

</RCC>

7、使用代碼添加菜單時,在構造函數中添加如下代碼:

QAction *openAction = new QAction(QString::fromUtf8("&Open"), this);// 建立新的動作 

QIcon icon(":/myImages/images/fileopen.png");// 添加圖示 

openAction->setIcon(icon);

openAction->setShortcut(QString::fromUtf8("Ctrl+O"));// 設定快捷鍵

ui->menu_F->addAction(openAction);// 在檔案菜單中設定新的打開動作

這裡添加圖示時,就是使用的資源檔案中的圖示。使用資源檔案,需要在最開始使用冒号,然後添加字首,後面是檔案的路徑。在代碼中使用檔案菜單,就是使用其objectName。大家現在可以運作程式檢視效果,當然這裡也可以将Open改為中文。

8、向工具欄添加圖示:可以将動作編輯器中的動作拖動到工具欄中作為快捷圖示使用;可以在工具欄上點選滑鼠右鍵來添加分隔符。

9、使用垂直布局管理器(QVBoxLayout)布局:部件自動垂直排列,并且進行水準拉伸,無論如何改變布局管理器的大小,按鈕總是水準方向變化。

  使用垂直分裂器(QSplitter)布局:部件自動垂直排列,但進行放大可以發現,使用分裂器按鈕縱向是可以變大的,這就是分裂器和布局管理器的重要差別。

10、快速從頭檔案聲明處建立函數定義的方法:到mainwindow.h檔案中,将滑鼠定位到showFindText()函數上,然後點選右鍵,在彈出的菜單中選擇“重構”→“在mainwindow.cpp添加聲明”,或者直接使用Alt+Enter快捷鍵,這樣就會直接在mainwindow.cpp檔案中添加函數定義,并跳轉到該函數處。

Qt快速入門學習筆記(基礎篇)

11、在QtCreator中有幾種快速定位函數的方法:

第一種,在函數聲明的地方直接跳轉到函數定義的地方。

例如我們在mainwindow.h檔案的loadFile()函數上點選滑鼠右鍵,在彈出的菜單上選擇“在方法聲明/定義之間切換”,這時就會自動跳轉到mainwindow.cpp檔案中該函數的定義處。如下圖所示。當然還可以反向使用。

Qt快速入門學習筆記(基礎篇)

第二種,快速檢視一個檔案裡的所有函數。

可以在編輯器正上方的下拉框裡檢視正在編輯的檔案中所有的函數的清單,點選一個函數就會跳轉到指定位置。如下圖所示。

Qt快速入門學習筆記(基礎篇)

第三種,使用類視圖或者大綱視圖。

在項目清單上面的下拉框中可以更改檢視的内容,如果選擇為類視圖或者大綱,則會顯示檔案中所有的函數的清單。如下圖所示。

Qt快速入門學習筆記(基礎篇)

第四種,使用查找功能檢視函數的所有調用處。 

在一個函數名上點選滑鼠右鍵,然後選擇“查找何處被使用”菜單,這時就會在下面的搜尋結果欄中顯示該函數所有的使用位置。我們可以通過點選一個位置來跳轉到該位置。如下圖所示。

Qt快速入門學習筆記(基礎篇)

12、在Action編輯器中,有兩個屬性toolTip和statusTip,分别為工具欄提示和狀态欄提示,如下圖

Qt快速入門學習筆記(基礎篇)

這時運作程式,當光标移動到建立動作上時,在下面的工具欄和狀态欄将會出現設定的提示。如下圖所示

Qt快速入門學習筆記(基礎篇)

13、狀态資訊可以被分為三類:臨時資訊,如一般的statusTip提示資訊,上面講到的動作提示就是臨時資訊;正常資訊,如顯示頁數和行号;永久資訊,如顯示版本号或者日期。可以使用showMessage()函數來顯示一個臨時消息,它會出現在狀态欄的最左邊。一般用statusBar->addWidget()函數添加一個QLabel到狀态欄上用于顯示正常資訊,它會生成到狀态欄的最左邊,可能會被臨時消息所掩蓋。如果要顯示永久資訊,要使用statusBar->addPermanentWidget()函數來添加一個如QLabel一樣的可以顯示資訊的部件,它會生成在狀态欄的最右端,不會被臨時消息所掩蓋。

14、關于随機數,在Qt中是使用qrand()和qsrand()兩個函數實作的。在使用qrand()函數産生随機數之前,一般要使用qsrand()函數為其設定初值,如果不設定初值,那麼每次運作程式,qrand()都會産生相同的一組随機數。為了每次運作程式時,都可以産生不同的随機數,我們要使用qsrand()設定一個不同的初值。

繼續閱讀