1. 程式人生 > >樹莓派入門教程——使用Qt開發介面程式

樹莓派入門教程——使用Qt開發介面程式

前言
        Qt是一個1991年由奇趣科技開發的跨平臺C++圖形使用者介面應用程式開發框架。它既可以開發GUI程式,也可用於開發非GUI程式,比如控制檯工具和伺服器。Qt是面向物件的框架,使用特殊的程式碼生成擴充套件(稱為元物件編譯器(Meta Object Compiler, moc))以及一些巨集,易於擴充套件,允許元件程式設計。2008年,奇趣科技被諾基亞公司收購,QT也因此成為諾基亞旗下的程式語言工具。2012年,Qt被Digia收購。2014年4月,跨平臺整合開發環境Qt Creator 3.1.0正式釋出,實現了對於iOS的完全支援,新增WinRT、Beautifier等外掛,廢棄了無Python介面的GDB除錯支援,集成了基於Clang的C/C++程式碼模組,並對Android支援做出了調整,至此實現了全面支援iOS、Android、WP。
        Qt是1991年奇趣科技開發的一個跨平臺的C++圖形使用者介面應用程式框架。它提供給應用程式開發者建立藝術級的圖形使用者介面所需的所有功能。Qt很容易擴充套件,並且允許真正地元件程式設計。基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等圖形界 面庫和 Windows 平臺上的 MFC,OWL,VCL,ATL 是同類型的東西。

        簡單的說,用Qt可以寫出很容易就移植到其他平臺的程式,基本上重新編譯下程式即可。

樹莓派上安裝Qt


使用如下命令進行安裝
sudo apt-get install qt4-dev-tools
sudo apt-get install qtcreator

由於安裝Qt需要從網路下載大概200多M的檔案,所以首先樹莓派得接入網路,其次安裝時間可能比較長,請耐心等待...
安裝完畢後,點選桌面左上角的Menu若可以看到如下圖所示Qt程式圖示,則說明Qt安裝成功。
<ignore_js_op> 

Qt配置
首次使用Qt需要對工具鏈進行配置,進入選單Tools->Options->Build&Run
<ignore_js_op> 
<ignore_js_op> 

點選右上角的Add按鈕,選擇GCC
<ignore_js_op>
 

按照下圖選擇編譯器和偵錯程式的路徑
<ignore_js_op> 
<ignore_js_op> 


新建Qt測試工程
<ignore_js_op> 
<ignore_js_op> 
<ignore_js_op> 
<ignore_js_op> 
<ignore_js_op> 
<ignore_js_op> 
<ignore_js_op> 

新建完工程後,程式整個框架就已經搭好,我們直接編譯下程式試試
<ignore_js_op> 

編譯沒問題,下面我們展開左邊的Forms檔案目錄,雙擊mainwindow.ui檔案,然後我們在這個介面上新增兩個按鈕,兩個按鈕分別控制樹莓派的一個引腳輸出高低電平,如下圖所示:
<ignore_js_op>
 
<ignore_js_op> 

在右邊修改好按鈕控制元件的名稱,同時修改按鈕顯示的檔案,選擇某個按鈕控制元件,單擊右鍵,在彈出的對話方塊中選擇Go to slot..,然後選擇Clicked()函式,Qt會自動連線一個訊號和槽,同時在mainwindow.cpp檔案中自動新增這個槽函式,我們在裡面寫按鈕點選事件即可。
<ignore_js_op> 
<ignore_js_op> 

我們現在建構函式中完成GPIO的初始化,然後在每個按鈕點選事件函式裡面完成GPIO高低電平輸出控制,然後再次編譯程式,出現如下問題:
<ignore_js_op> 

根據提示,我們知道是因為在連結的時候沒有找到wiringPi相關函式的原因導致,所以我們需要在連線的時候引入這個庫,操作方式很簡單,只需要在.pro檔案中加入該庫即可,如下圖所示:
<ignore_js_op> 

然後再次編譯,正常情況下到這裡就會編譯成功了,進入工程目錄,我們會發現有個很長名字的資料夾,裡面都是Qt在編譯的時候產生的一些中間檔案,當然我們編譯生成的可執行檔案也在裡面,名字和工作名字一樣,開啟控制檯,用cd命令進入該目錄。然後用
sudo ./gpio_led
即可執行程式,程式執行效果如下圖所示:
<ignore_js_op> 

21.png (172.18 KB, 下載次數: 0)

下載附件

2015-4-10 16:52 上傳



點選下兩個按鈕,看是不是控制了樹莓派的GPIO.0管腳輸出了高低電平?
工程及原始碼下載:
<ignore_js_op> 

轉載請註明出處,本文連結地址:http://www.embed-net.com/thread-142-1-1.html