今天突然想到很多惡搞的東西,這就是其中之一。
QB Qt,只差一字誒 xdd(被打)。
所以,
Qt:「與我簽訂契約,成為程式設計師吧!」契約那有什麼契約好簽的?
Qt 目前分為兩種授權:LGPL 和商用授權。
以下就簡單介紹一下,這倒底有什麼差別。
LGPL
- 程式開發限制:只能使用動態連結(DLL)
- 技術支援:另外付費
- 修改函式庫:不能;必需使用相同授權
商用授權
- 程式開發限制:沒有
- 技術支援:根據合約
- 修改函式庫:可以
如有衝突,以
官方說法為準。
所以我很有良心,事前都講好了,不要說我是惡德推銷員!
安裝那簽完約後要做什麼?
廢話,趕快
下戴開發工具,寫程式去。
去年暑假時,他們是讓人直接下戴安裝檔,現在他們改成線上安裝檔。
我是覺得好像沒這必要,不過算了。
中間就跳過,重點是這個畫面
- Miscellaneous
- MinGW 4.4 - 這是編譯套件包,如果你沒有編譯器,就要安裝
- Qt Source - 函式庫的原始碼,有興趣可以看看
- Development Tools
- Desktop Qt - 設定編譯使用的編譯器和函式庫版本
- Simulator - 如果你要開發可攜裝置的軟體,可以安裝這個來模擬執行的狀況
- Maemo Toolchain - 開發手機程式用的
- Symbian Toolchains - 同上
安裝完了,介紹一下工具:
Qt Creator開發環境,也就是寫程式的程式
Qt Assistant離線說明文件。第一次開會要求建立索引,等一陣子吧
Qt Linguist翻譯程式用的
Qt Designer以拖曳圖形的方式設定程式介面,不過 Creator 也能做到,所以很少用
Qt Demo已編譯好的專案,可以看看 Qt 能做到什麼。
開始寫程式我是很希望這篇教學是簡單易懂,所以請多多提出意見。
開新專案何必廢話呢?我們來做個練習
Qt Quick Project 使用 QML 開發專案,這東西還蠻讚的,不過我只想討論 C++ 的部份。
如果你想知道怎麼用,參考
基本教學 和
SameGame。
Qt Widget Project用 C++ 來寫圖形介面程式,也就是我想講的部份。
Mobile Qt Application 沒碰過,反正我沒可攜裝置...大概要到老閭要求的時候才會學。
Other Project各種特殊需求,像是文字介面程式、函式庫、插件或是匯入
Project from Version Control由版本控制庫匯入專案。
呃...什麼是版本控制?就是當你團隊很大時,它能幫你管理程式的修改。自然的,一個人就免了。
個人只聽過 CVS, svn 和 git 其中最新的是 git,有興趣查查資料吧。
選一個地方放你的專案。
它會在你選的資料夾下建立一個和 Project Name 同名的資料夾。
另外,打勾就可以把該資料夾設為預設資料夾,揪干心ㄟ。
Target 就是用哪個編譯器和哪個函式庫版本,稍微記一下就好。
重頭戲來了。
Qt 建議將視窗包成一個物件。在這裡,就叫做 MainWindow。
Base class 包含 QMainWindow, QWidget 和 QDialog,依序是 有工具列和狀態列的視窗, 很單純的視窗 以及 對話框。
下面的檔案會根據類別名稱而變動,所以不用特別動它。
表單(Form)設計和簡單程式碼看到 Forms「資料夾」嗎?打開裡面的 mainwindow.ui
左邊有一堆東西,把你想要的都丟進中上的地方吧,像是,按鈕(Push Button)如何?
我們把它放上去,並改了它顯示的文字。
然後請注意下面。
按鈕按了沒反應,是因為我們沒說要幹麻,所以我們就跟電腦講要幹麻。
之前我有寫過有關
Signal 和 Slot 的文,如果你覺得這兩個詞有點難懂,可以參考一下。
如果想做更複雜的事,在右上找到你的按鈕,開右鍵選單,選 Go to slot。
這意思是,當某個 signal 送出後,執行此自訂義 Slot。
不過,因為按鈕按下去就結關視窗了,所以我們另外拉一個按鈕進來吧?
這邊很單純的把視窗的標題改成按鈕顯示的文字,很簡單吧!
不過 ui->pushButton 是啥?ui 是指我們剛剛塗塗抺抺的地方,它裡面有個叫 pushButton 的物件,就是按鈕啦。
想的話,你可以在剛剛的地方把 pushButton 改成你要的名子,不過程式碼中對應的名子也要一起改喔,不然會
斷頭無法執行。
是不是少了什麼?喔!按鈕看起來位置不美觀,我們來調一調...
不用啦!看到上面的上面。
第一個按鈕設定物件,第二個設定 signal&slot ,第三個設定 buddies,第四個設定 Tab 鍵切換順序。
上面講的都跟本案無關(被打)。
第五、第六、第九、第十和第十一是這次要講的, Layout,它們建立一個規則,叫其中的物件按照規則排好。
設定好後,不管你的視窗怎麼拉,按鈕都會乖乖的排好,比買乖乖給它吃還有效(?)
現在來到右下的右下
- 按下綠色的按執行
- 按下有蟲蟲的按鈕檢查蟲蟲危機(debug mode)
- 按下鎚子編譯
- 上面那台電腦是選擇 target 的,預設是 debug
翻譯(國際化和本地化)現在有個問題,我們的志向遠大,想發國際版的程式,這要怎麼做?
國際版的程式主要是語言問題,現在我來介紹一下 Qt 的翻譯系統。
打開你的 *.pro 檔(test.pro),加入如下圖這些東西:
$${} 是 *.pro 中的取代指令,專業的說法是巨集。
所以這邊的意思是:TRANSLATIONS = language/test_zh_TW.ts \ (以下略)。
後面那個 zh_TW 是語言代號,就是台灣中文啦。(日文是 jp)。如果要知道更多,參考
英文維基。
*.ts 是翻譯來源檔,不過還不急,我們還要做別的事。
打開你的 main.cpp ,把它改成這樣。
其實它的形式和我們在 *.pro 裡面寫的都一樣,不過沒有加上副檔名。
事實上它也不是讀 *.ts ,而是 *.qm ,這是給電腦讀的翻譯目的檔。
接著比較辛苦,打開你的開始功能表,找到 Qt 資料夾中的 command prompt
我的東西很多是因為我裝了不少版本,如果你也是的話請找正確的函式庫版本。
開啓之後你會跟我說:「靠盃,這不是命令與提示字元(DOS)嗎?」
請你跟我這麼做:
cd \D [你專案的位置]lupdate test.pro找一下,有沒有你預期的東西出現了?沒有?
很顯然的,我們要的 language 資料夾沒出現,所以我們就自己加一個吧! (眾:你為什麼之前沒說? 我:你又沒問~ 眾:你欠打啊!)
恩,然後重新操作上面的指令。
找到 Qt Linguist 這個程式,用它開啓你要翻的 *.ts 檔。
翻好後存檔並釋出。
微調當然啦,你會發現有些問題,翻譯檔沒什麼效果。
基本上這次我沒唬你,只是電腦選了一個不同的 工作目錄(working directory)。(被巴)
回到 Creator 那邊,選 Project->Run ,你會發現 working directory不是在你的專案目錄下,就改吧。
然後翻譯就生效了,就是這樣!
第二個要調的是程式輸出的位置。預設上, Qt 會把它放到專案目錄中的 debug 和 release 目錄。
回到你的 test.pro ,加入右邊的文字: DESTDIR = ./
我希望你還開著 command prompt ,下面繼續照做:
qmake
mingw32-make release最後一個了,我們要 DLL 檔。
我這邊的位置是在 D:\QtSDK\Desktop\Qt\4.7.3\mingw\bin
如果你找不到,可以在 command prompt 中輸入
echo %PATH%,那些資料夾中一定會有。
以下是一個基本 Qt 程式所需的 DLL
- libgcc_s_dw2-1.dll
- mingwm10.dll
- QtCore4.dll
- QtGui4.dll
上面兩個是因為我用 gcc 編譯所以要,下面兩個分別是核心和圖形介面的支持。
其實少哪個函式庫,只要開你的程式,它就會告訴你。所以沒什麼好怕的喔!
當然啦,最後還是推薦有心學程式的人練一下純程式碼,這樣才能對 Qt 整體有更深入的了解。
像是
Widget Tutorial 和
Simple Address Book真正的爆肝,才正要開始呢!(光速逃)