1. 程式人生 > >tiny4412上的應用程式開發示例

tiny4412上的應用程式開發示例

1、建立目錄

在這開始之前,我們先建立一個 qtopia2_apps 目錄,用於專門存放我們自已編寫的 qtopia2.2.0 程式,  在 Linux 終端中鍵入以下命令建立該目錄:

[[email protected] ~]# mkdir -p /opt/qtopia2_apps 

然後在  qtopia2_apps 目錄下建立 hello 作為本示例的專案目錄,在終端上輸入如下命令:

[[email protected] ~]# cd /opt/qtopia2_apps 

[[email protected] ~]# mkdir hello

2、使用 designer 工具設計圖形介面

  2.1 主介面的設計

利用designer 工具來設計hello 程式的主介面,主介面將儲存成名為  main_form_base.ui 的 ui 檔案,輸入如下命令:

[[email protected] ~]# cd hello

[[email protected]~]#/opt/FriendlyARM/tiny4412/linux/x86-qtopia/qtopia-2.2.0-FriendlyARM/qt2/bin/designer main_form_base.ui 

在彈出的 New  Form 介面中,選擇“Widget”然後點選”OK“,我們將建立一個基於 QWidget 

的窗體。接下來我們修改視窗的屬性值,將name設定為TMainFormBase,width變為300height設定為200caption設定為My Hello.

  2.2 在窗體上放置控制元件

修改完視窗的屬性值後,接下來我們就要在視窗上放置控制元件了,往視窗上放置控制元件的方法是:在工具欄上點選要放置的控制元件,再在視窗空白處點選一下即可。

主要放置三個控制元件:一個文字標籤,兩個按鈕標籤,各控制元件屬性的設定如下圖所示。

2.3  為按鈕新增點選事件的處理

我們首先需要新建兩個 slot 函式,一個用於處理OK按鈕的點選事件,一個用於處理  Exit 按鈕的點選事件,新建 slot 

的步驟如下(只將重要步驟的截圖放在下面)

     1)點選”Edit”選單,選擇“Slots”,將彈出slot 編輯對話方塊。

     2)在上面的對話方塊中,點選New Slot按鈕,然後在 Slot 編輯框中輸入“exitButtonClicked()”。

     3)然後再點”New Slot“按鈕,並在 Slot 編輯框中輸入“okButtonClicked(),  最後   點選 OK 儲存並退出該對話方塊。

     4)其次,將 slot 函式與按鈕的點選事件對應起來: 單擊工具欄上的 Connect Signal/Slots 圖示 ,然後參照下圖所示進行操作,在“Ok”按鈕上按下滑鼠左鍵不放然後拖動到視窗的空白處放開滑鼠,操作完成後將會彈出 Edit  Connects 對話方塊。

     5)在彈出的 Edit  Connects 對話方塊中,將 clicked()事件連線到 calcButtonClicked()  slot 函式,操作方法如下圖所示:

     6)下面用同樣的方法操作 Close 按鈕,最後可以得到完整的UI介面。

3、利用C++編寫程式碼

     現在開始為hello 編寫程式碼,需要建立三個原始碼檔案,一個是標頭檔案 main_form.h,一個是原始碼檔案 main_form.cpp,一個是 main.cpp

 首先在終端輸入:  

   [[email protected] ~]# vi main.cpp

寫入如下程式碼:

   #include "main_form.h" 

   #include <qtopia/qpeapplication.h> 

   QTOPIA_ADD_APPLICATION("hello,TMainForm) 

   QTOPIA_MAIN 

接著輸入:

   [[email protected] ~]# vi main_form.h 

在其中寫入如下程式碼:

#ifndef  __MAIN_FORM_H__

#define  __MAIN_FORM_H__ 

#include "main_form_base.h" 

#include <qsocketnotifier.h>

class TMainForm: public TMainFormBase

 { 

     Q_OBJECT 

public: 

     TMainForm(QWidget  *  parent  =  0,  const  char  *  name  =  0,  WFlags  f =  WType_TopLevel)  : 

TMainFormBase(parent,name,f) {} 

virtual ~TMainForm() {} 

public slots: 

     void okButtonClicked(); 

     void exitButtonClicked(); 

}; 

#endif 

然後用 vi 編輯器建立並開啟  main_form.cpp 檔案

[[email protected] ~]# vi main_form.cpp

寫入如下程式碼:

#include "main_form.h" 

#include <qlineedit.h> 

void TMainForm::exitButtonClicked() 

     close(); 

void TMainForm::okButtonClicked() 

最後,編寫專案檔案 hello.pro

[[email protected] ~]# vi hello.pro 

CONFIG += qtopiaapp 

CONFIG-= buildQuicklaunch 

HEADERS= main_form.h 

SOURCES= main_form.cpp main.cpp 

INTERFACES= main_form_base.ui 

TARGET= hello

4、在 PC 上編譯並執行示例

首先,編寫一個指令碼 buildhost.sh 來執行PC 版本的編譯工作

在終端輸入如下命令:

[[email protected] ~]#cd /opt/qtopia2_apps/hello

[[email protected] ~]# vi buildhost.sh

    在 vi 編輯器中輸入如下內容: 

#!/bin/sh 

source /opt/FriendlyARM/tiny4412/linux/x86-qtopia/qtopia-2.2.0-FriendlyARM/setQpeEnv 

qmake -o Makefile.host -spec qws/linux-generic-g++ *.pro 

make -f Makefile.host clean 

make -f Makefile.host 

執行以下命令可以實現編譯指令碼:
    [[email protected] ~]# chmod +x buildhost.sh

[[email protected] ~]# ./buildhost.sh 

編譯完成後,在 hello 下生成了hello 可執行檔案,輸入如下命令可以在模擬器上執行.(必須已經安裝了x86-qtopia

# cd /opt/FriendlyARM/tiny4412/linux/x86-qtopia

# ./run& 

接著輸入如下命令:

cd /opt/qtopia2_apps/hello

    export  QTDIR=/opt/FriendlyARM/tiny4412/linux/x86-qtopia/qtopia-2.2.0-FriendlyARM

/qtopia/image/opt/Qtopia/

export  QPEDIR=/opt/FriendlyARM/tiny4412/linux/x86-qtopia/qtopia-2.2.0-FriendlyARM

/qtopia/image/opt/Qtopia/ 

    export  HOME=$QPEDIR/root/ 

export  LD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBARAY_PATH

最後執行: 

./hello

程式在 PC 上的執行結果如下所示: 

5、交叉編譯示例程式並在tiny4412上執行

   首先,編寫一個指令碼 buildarm.sh 來執行ARM 版本的編譯工作

在終端輸入如下命令:

[[email protected] ~]#cd /opt/qtopia2_apps/hello

[[email protected] ~]# vi buildarm.sh

    在 vi 編輯器中輸入如下內容: 

#!/bin/sh 

source /opt/FriendlyARM/tiny4412/linux/arm-qtopia/qtopia-2.2.0-FriendlyARM/setQpeEnv 

qmake -spec qws/linux-arm-g++ -o Makefile.target *.pro 

make -f Makefile.target clean 

make -f Makefile.target 

執行以下命令可以實現編譯指令碼:
    [[email protected] ~]# chmod +x buildarm.sh

[[email protected] ~]# ./buildarm.sh 

編譯完成後,在hello下生成了hello可執行檔案,將它拷貝到SD卡,然後將SD插到tiny4412開發板上,在串列埠終端上輸入以下命令將可執行檔案拷貝到開發板上的  /opt/Qtopia/bin/  目錄下: 

# cp /sdcard/hello /opt/Qtopia/bin/

先通過串列埠終端的命令列來執行,在串列埠終端上輸入以下命令:

# cp /bin/qtopia /bin/run_myhello 

# vi /bin/run_myhello

在 vi 編輯器中,改變下面一行的內容:

exec $QPEDIR/bin/qpe 

更改成: 

exec $QPEDIR/bin/hello

接著在終端輸入:

 # run_hello&

可以看到Arm上顯示如下內容:

6、在 Qtopia 上新增 hello 程式圖示

Fedore9 系統中找一個現成的圖示來作來 hello 的圖示,我使用 /usr/share/icons/hicolor/48x48/apps/  目錄下的 gnome.png  檔案作為 hello 的圖示,把它拷貝到我們的專案目錄並改名為 hello.png,  執行以下命令將該圖示複製到hello的專案資料夾裡來,在終端輸入如下命令: 

[[email protected] ~]# cd /usr/share/icons/hicolor/48x48/apps/ 

[[email protected] ~]# cp gnome-sudoku.png /opt/qtopia2_apps/hello/hello.png

接著寫入:

 # cd /opt/qtopia2_apps/hello/ 

 # vi hello.desktop

在 vi 中輸入以下內容並儲存: 

[Translation] 

File=QtopiaSettings 

Context=hello 

Comment[Desktop  Entry/Name]=Use  soft  hyphen  (char  U00AD)  to  indicate 

hyphenation 

[Desktop Entry] 

Exec=hello 

Icon=hello

Type=Application 

Name[]=My Hello 

CanFastload=0 

   最後把 hello.png hello.desktop  這兩個檔案放入SD卡,然後將SD卡插到 tiny4412開發板上,在串列埠終端上執下以下命令,把這兩個檔案拷貝到Qtopia目錄的相應位置:

# cp /sdcard/hello.desktop /opt/Qtopia/apps/Applications/

# cp /sdcard/hello.png /opt/Qtopia/pics 

完成後重啟開發板,應該可以看到應用程式圖示了

7、附件(主要含有原始碼等)。經過測試已經完全通過。

相關推薦

tiny4412應用程式開發示例

1、建立目錄 在這開始之前,我們先建立一個 qtopia2_apps 目錄,用於專門存放我們自已編寫的 qtopia2.2.0 程式,  在 Linux 終端中鍵入以下命令建立該目錄: [[email protected] ~]# mkdir -p /opt/q

撥開迷霧|嵌入式Linux應用程式開發只有高手才能完成?

好訊息:新年大促!《微控制器與嵌入式系統應用》2017全年電子刊合集僅售29.9!歡迎大家進入嵌

【原創】Windows應用程式報錯常用分析方法總結

在日常使用Windows的過程中,經常會遇到應用程式不能正常啟動、關閉等使用問題。對於Windows來說,解決這些問題的方法比較多,大多時候我們可以通過百度或谷歌搜尋來解決。但更多的時候,我們需要找出背後的原因,也要掌握分析問題和解決問題的方法。 分析應用程式異常的問題,一般的出發點有兩個,第一從應用程式本

Spark應用程式開發引數調優深入剖析-Spark商業調優實戰

本套系列部落格從真實商業環境抽取案例進行總結和分享,並給出Spark商業應用實戰指導,請持續關注本套部落格。版權宣告:本套Spark商業應用實戰歸作者(秦凱新)所有,禁止轉載,歡迎學習。 Spark商業應用實戰-Spark資料傾斜案例測試及調優準則深入剖析 Spark商業應用實戰-Spark資源

Windows應用程式開發

Windows窗體應用程式開發:WinForm、桌面應用程式,有可執行檔案(.exe)即安裝包。是一種C/S(客戶機/伺服器)架構應用程式 1.Windows窗體應用程式,用視覺化的窗體和控制元件生成豐富介面的,可互動操作的應用程式。從工具箱選擇相應控制元件,拖曳到窗體介面,通過設定其屬性,佈局外觀。雙擊控制

Linux應用程式開發筆記:測試程式碼執行時間

  #include <stdio.h> #include <sys/times.h> #include <unistd.h> void main(void) { double duration; clock_t start,

Linux應用程式開發筆記:make menuconfig環境搭建

1、目的 Linux應用程式開發採用與Linux核心一致的menuconfig圖形配置,方便功能元件裁剪。   2、準備工作 下載:Kconfiglib原始碼(https://github.com/ulfalizer/Kconfiglib)   3、環境搭

Android 應用程式開發環境搭建說明

之前開發一直用的Eclipse,今年接了個Android 車載POS機專案,系統使android 7.1 的,然後準備更新sdk發現已經停止更新了,儘管之前SDK的更新也很辛苦,國內google被牆了,只能利用國內的某些映象網站實現Android SDK線上更新。然後查閱論壇,才發現我已經落伍了,

IBM 釋出企業級社交協作平臺 Domino V10,開啟快速應用程式開發的新時代

北京時間 2018 年 10 月 10 日,IBM 正式全球釋出企業級社交協作平臺 Domino V10。全新版本 Domino V10 堅持安全可控,在保留傳統開發模式的同時擁抱現代化設計,創造更快速、現代、安全的開發環境,用更快更便捷的體驗帶企業進入下一個低

《資料庫系統應用程式開發》考試

考試的主要內容是JDBC Programing with Java,除了第一大題的簡單JDBC語句,還涉及實驗報告和Java程式設計的內容。 我屆考試題目與往年極其相似,後悔沒有好好看題。。呵呵 下面附上考試真題,造福全人類。(^_^) 看完可以考滿分了。     

Java應用程式開發學習之Iterator介面

Iterator是Java中的一個介面: 該介面提供瞭如下方法: 通過前面https://blog.csdn.net/morixinguan/article/details/85006962介面的學習我們已經瞭解到,介面需要一個子類去實現它的方法,而在相關的類中已經實現了對應

Java應用程式開發學習之多型

在Java中,使用關鍵字extends繼承或者關鍵字implements實現,是Java實現多型性的前提。 一、Java多型定義的格式 父類引用指向之類物件稱之為多型,多型的定義格式主要有兩種。 (1)父類名稱 物件名 = new 子類名稱(); (2)介面名稱 物件名 = new

Java應用程式開發學習之介面

一、介面的抽象方法定義: 在任何版本的java中,介面都能定義抽象方法 格式: public abstract 返回值型別 方法名稱(引數列表); 注意事項: 1.介面當中的抽象方法,修飾符必須是兩個固定的關鍵字:public abstract 2.這兩個關鍵字修飾符,可以選擇性省略

Java應用程式開發學習之繼承

面對物件程式語言有三類特性,分別是封裝性、繼承性以及多型性。 本節就來簡單介紹下Java的繼承。 一、繼承的簡單介紹、特點、規則 繼承是多型的前提,如果沒有繼承,就沒有多型。繼承主要解決的問題是:共性抽取(解決重複程式碼的問題)。 Java繼承知識點裡兩個重要的名詞:父類和子類

Java應用程式開發學習之static關鍵字應用

Java的static關鍵字和C/C++語言的關鍵字有所不同: 一旦在Java裡使用了static關鍵字,那麼這樣的內容不再屬於物件自己,而是屬於類本身的,所以凡是本類的物件,都共享一份。 1、使用Java static關鍵字修飾成員變數 以下是Stundent類。 packag

Java應用程式開發學習之String類的使用方法

在原來文章介紹了有關Java程式開發的詳細步驟: https://blog.csdn.net/morixinguan/article/details/84956938 Java字串主要有以下特點: 1、字串的內容永不改變 2、由於字串的內容不可改變,所以字串是可以共享使用的,類似於C

Java應用程式開發學習之集合ArrayList類的使用方法

在原來文章介紹了有關Java程式開發的詳細步驟: https://blog.csdn.net/morixinguan/article/details/84956938     這節,來介紹下集合ArrayList的使用方法,回到上一篇文章的,我們一樣跟著腳步來學習使用

Java應用程式開發學習之程式編寫步驟詳細解析

最近需要預備APK的開發,由於接觸java不多,久而久之也就忘了,寫個部落格做一下學習備忘。 牢記開發步驟,才能避免以後不會走彎路。 1、開啟JDK APIXXX手冊(這裡以JDK API1.6中文版為例,找Scanner類的使用方法) 2、導包    

基於Swift的iOS應用程式開發:通過UITextFieldDelegate快速理解Delegate事件代理

// // 關於文字輸入框的事件代理,摘錄蘋果開發者中心的官方解釋如下: //*******************************************************************************************// //* To understand wh

嵌入式Linux應用程式開發——多執行緒4(執行緒的同步——訊號量)

#include <pthread.h> #include <stdlib.h> #include <unistd.h> #include <stdio.h> #include <semaphore.h> int