創作內容

3 GP

Qt:與我簽訂契約,成為程式設設師吧!

作者:likwueron│2011-05-23 12:38:09│巴幣:104│人氣:9164
今天突然想到很多惡搞的東西,這就是其中之一。

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 TutorialSimple Address Book

真正的爆肝,才正要開始呢!(光速逃)
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=1314985
Some rights reserved. 姓名標示-非商業性 2.5 台灣

相關創作

同標籤作品搜尋:Qt|C++|QB|程式設計

留言共 2 篇留言

銀月之弧
僅支持 不使用 我怕我要向QB訂契約以防肝爆掉= =

05-24 12:33

likwueron
是 Qt 喔!(被拖走)05-24 18:54
誰來救救我嗚嗚嗚
QQ你怎麼可以學的起來

07-23 01:57

likwueron
你害我發現我已經發了17篇相關的文,所以還不快點看一下。
叫我程式碼大大(被巴飛)

正經來說啦。
你要先會英文,因為assistant蠻好用的,而且英文的資料一定是最多的。
我個人查中文嘛,哦,我是說,簡體中文,翻譯的啦、轉貼的啦佔了相當的比例,那為什麼不看原文?
而如果你真的要簡中,目前是看到一個啦:
http://www.devbean.net/2012/08/qt-study-road-2-intro/
因為你不一定買書,所以這或許是不錯的選擇07-23 02:34
我要留言提醒:您尚未登入,請先登入再留言

3喜歡★iqandadie 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:來看看那精美的油滴... 後一篇:我也到送人的年紀了嗎?...

追蹤私訊切換新版閱覽

作品資料夾

Waterfall10絕大部份巴友
金庸武俠同人《何妨吟嘯且徐行》,楊逍、范遙少年時的歷險、結義 ~看更多我要大聲說10小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】