主题 : mini2440上qtopia应用程序开发步骤(x86-qtopia版本) 复制链接 | 浏览器收藏 | 打印
创新改变世界,技术驱动中国
级别: 论坛版主
UID: 7752
精华: 2
发帖: 55
金钱: 570 两
威望: 276 点
贡献值: 20 点
综合积分: 150 分
注册时间: 2009-07-27
最后登录: 2010-03-30
楼主  发表于: 2009-09-12 16:14

 mini2440上qtopia应用程序开发步骤(x86-qtopia版本)

管理提醒: 本帖被 hxfirefox 执行取消置顶操作(2009-10-28)
FriendlyARM在光盘中提供了开发Qtopia-2.2.0的开发环境和软件,因此只要对其中的软件好好加以利用就可以开发出能够在mini2440上运行的程序,下面我把我自己开发经历做一个交流,我相信在我们这群技术的热爱者中不乏高人和大牛,所以我也是抛砖引玉,如果有说的不对的请大家提出来,这样才能更好进步。好,闲话不多说,进入正题,我先讲讲FriendlyARM中提供的开发环境和软件的作用:
按照FriendlyARM文档安装所有软件后,可以发现mini2440文件夹下包含了两个qtopia文件夹,一个是x86-qtopia另一个是arm-qtopia,对于这两个文件夹我是这么理解的,x86-qtopia提供了我们在主机上开发qtopia的软件环境,开发过wince的人都知道SDK的重要性,这里我们也可以把x86-qtopia理解为提供给我们的SDK或者说模拟器,只不过它的功能还要大的多,你可以使用里面的工具设计图形界面编译程序,并在qvfb中运行,它的存在就是为了方便我们开发qtopia;arm-qtopia则是提供在目标机上运行软件的编译工具,但是一般地它不具有qvfb,所以这两个文件夹需要结合起来使用,才能达到最佳效果。
下面我来谈谈x86-qtopia的编程步骤,在这里我采用了比较繁琐的步骤,主要是讲一下流程,后面会提到
比较简捷的方法。
主机环境:RedHat9
编译工具:arm-linux-gcc-4.3.2
1、进入x86-qtopia,建立目标文件夹,即存放工程文件,.cpp.h文件的文件夹
2、设置开发环境,执行命令 # source qtopia-2.2.0-FriendlyARM/setQpeEnv
3、创建工程 # progen -t app -o (工程名).pro
4、进入qtopia-2.2.0-FriendlyARM/qt2/bin,启动Qt designer # ./designer,即可以进行图形界面的设计
5、将.ui文件存放在工程文件夹中
6、生成.h和.cpp文件,运用.ui文件,# uic -o *.h *.ui # uic -o *.cpp -impl *.h *.ui
7、在.h和.cpp文件中添加需要的代码
8、编写main.cpp
9、修改.pro文件,为其中的HEADERS= SOURCES= TARGET=添加文件,HEADERS指头文件,若有多个用空格分隔SOURCES为源文件,TARGET为目标文件,即最后生成的可执行文件名
10、生成Makefile
(1)查看环境变量,# echo $TMAKEPATH 查看结尾是否为/qws/linux-generic-g++
(2)修改tmake/lib/qws/linux-generic-g++/tmake.conf将TMAKE_LINK=gcc和TMAKE_SHLIB=gcc改为=g++
(3)生成Makefile # tmake -o Makefile *.pro
(4)修改Makefile 为LIBS=添加-lqtopia2 -lqtopia -lqpe
11、编译 # make
12、运行 # ./可执行文件名 -qws(不可少)
上面就是一般步骤,但是比较繁琐,个人觉得程序设计的重点应该放在对.cpp和.h文件的编写,以及调试中错误的纠正所以下面我再把常用的,也是比较方便的方法介绍下
1、进入x86-qtopia,建立工程目录
2、将编写好的.cpp .h拷贝至工程目录
3、产生工程文件 执行命令 # qmake -project
4、修改.pro工程文件 在文件最后架上TARGET=可执行文件名
5、拷贝x86-qtopia中例程hello中的脚本文件build至工程目录,并执行 # ./build,该脚本已经将设置环境变量调用相应库生成Makefile,生成可执行文件写入其中。
6、拷贝hello中的脚本文件run拷贝至工程目录,修改最后一句话将路径换成可执行文件所在工程目录即可,运行程序 # ./run
对照两种方法,会发现在下面这种方法中没有了对图形界面设计步骤,我个人认为.ui文件并不重要,没有.ui一样可以编译程序,它的出现只是方便设计者对图形界面的布局。其实对于布局完全可以不用Qt Designer,完全可以用纸和笔来代替,在设计之前,将你的想法画在纸上,并订出相应尺寸和位置,然后将其变成代码就可以了,这样自由度更大,我个人也推崇这种方法。
上面只介绍了x86上设计qtopia程序的方法,我将在后面和大家分享arm中开发qtopia的一些心得,希望我写的这些对大家能有帮助。
[ 此帖被hxfirefox在2009-09-15 07:52重新编辑 ]
Eddy Lau (Sun Boy)
级别: 圣骑士
UID: 11202
精华: 1
发帖: 364
金钱: 1885 两
威望: 380 点
贡献值: 1 点
综合积分: 748 分
注册时间: 2009-11-30
最后登录: 2010-04-12
1楼  发表于: 2010-04-08 09:46
引用第37楼gen216ius于2010-04-07 21:53发表的  :
期待这样文章
详细说明且说出具体步骤的作用来

按照这些步骤, 你真的能成功编译Qtopia2.2的应用程序吗?
為什麼生世間上 此間許多哀與傷 為什麼爭鬥不絕 歡欣不永享 
問為何人存隔膜 顏面無真相 問那天可找得到 理想中的烏托幫 
Eddy Lau (Sun Boy)
级别: 圣骑士
UID: 11202
精华: 1
发帖: 364
金钱: 1885 两
威望: 380 点
贡献值: 1 点
综合积分: 748 分
注册时间: 2009-11-30
最后登录: 2010-04-12
2楼  发表于: 2010-04-08 10:50
引用第39楼gen216ius于2010-04-08 10:25发表的  :


不能呢!!
我的做法是
1、进入x86-qtopia,建立工程目录
.......

既然不能, 为何还要期待呢?

参考小弟那个hello程序的帖子便清楚了.
為什麼生世間上 此間許多哀與傷 為什麼爭鬥不絕 歡欣不永享 
問為何人存隔膜 顏面無真相 問那天可找得到 理想中的烏托幫 
Eddy Lau (Sun Boy)
级别: 圣骑士
UID: 11202
精华: 1
发帖: 364
金钱: 1885 两
威望: 380 点
贡献值: 1 点
综合积分: 748 分
注册时间: 2009-11-30
最后登录: 2010-04-12
3楼  发表于: 2010-04-08 11:11
引用第41楼gen216ius于2010-04-08 10:53发表的  :


你的那个是非常的不错!!!但是没有讲到是怎么样生成这些的,你能告诉你开发流程中的详细步骤吗?!!!谢谢!!!

开发流程在录像片段已经演示得很清楚了.

所有在hello程序内的档案都是要自行用文书处理器gedit编写的, 它们并不会无中生有, 也不会从天上掉下来的!

世上是没有不劳而获的技术!
為什麼生世間上 此間許多哀與傷 為什麼爭鬥不絕 歡欣不永享 
問為何人存隔膜 顏面無真相 問那天可找得到 理想中的烏托幫 
Eddy Lau (Sun Boy)
级别: 圣骑士
UID: 11202
精华: 1
发帖: 364
金钱: 1885 两
威望: 380 点
贡献值: 1 点
综合积分: 748 分
注册时间: 2009-11-30
最后登录: 2010-04-12
4楼  发表于: 2010-04-08 15:17
引用第44楼gen216ius于2010-04-08 11:54发表的  :

我又再看了一遍你的视频,讲得非常之好,但就是从下面开始就没有讲了,相信很多初学者都有这样的疑问,就劳大牛eddylau帮忙下,谢谢呵!!!!!
6、生成.h和.cpp文件,运用.ui文件,# uic -o *.h *.ui # uic -o *.cpp -impl *.h *.ui
不能通过上面的方法来生成.h跟.cpp文件吗?!!!!
然后再进行如下修改
.......

敢问兄台到底有没有认真地看看帖子的总结部分呢?
如果有的话, 为何还要不断问这些无知的问题呢!

3. 开发Qtopia应用程序和开发一般的Qt应用程序是有些不同的,不要将开发Qt应用程序
  的模式硬套用在Qtopia上,否则会有麻烦,而且得出来的界面风格与Qtopia格格不入,
   有点古怪.


6. 不要自行用uic来把*.ui档转化为*.cpp及*.h档,这件事情会在运行build脚本时自动完成,
   只不过转化出来的*.cpp及*.h档,是储存在一个hidden folder内(用ls -a便可看见).
   不要更改这些档案来实行程序所需的功能,正确的做法是自行编写一个子类来继承由
  Qt designer设计的那个Form,这样一来便可调用其上的所有控件.这点是整个开发过程
  的重点所在.

為什麼生世間上 此間許多哀與傷 為什麼爭鬥不絕 歡欣不永享 
問為何人存隔膜 顏面無真相 問那天可找得到 理想中的烏托幫 
Eddy Lau (Sun Boy)
级别: 圣骑士
UID: 11202
精华: 1
发帖: 364
金钱: 1885 两
威望: 380 点
贡献值: 1 点
综合积分: 748 分
注册时间: 2009-11-30
最后登录: 2010-04-12
5楼  发表于: 2010-04-09 11:01
引用第46楼gen216ius于2010-04-09 10:03发表的  :


再次希望大牛eddylau能把问题简单化,适合新手,同时有你自己的见解,这对于像您这样的大牛看了也会有收获的,这不是很好吗?!!!



hello程序其实很简单, 只不过是你们硬要把它復杂化而已!

你们总是要把开发旧式的桌面Qt模式硬套用在Qtopia上, 因此弄致错误频生, 小弟也无能为力!

祝你好运
為什麼生世間上 此間許多哀與傷 為什麼爭鬥不絕 歡欣不永享 
問為何人存隔膜 顏面無真相 問那天可找得到 理想中的烏托幫