Linux下用QT进行软件开发的流程QT 2009-11-20 17:09:49 阅读69 评论0 字号:大中小1.用QT Designer开发非GUI的C/C++软件1)建立工程:双击上图中的C++ Project;2)新建源程序并添加到工程中:新建hello.cpp后会自动加入到工程,hello.cpp如下:#include<iostream>using namespace std;int main(){cout<<"Hello! this program is created by QT Designer !"<<endl;cout<<"You can build a project by QT,and it will generate a makefile by run$qmake "<<endl;cout<<"Then you can run $make to compile it ."<<endl;cout<<"By QT Designer,you can develop software as easy as onWindows!"<<endl;}3)生成makefile:在终端中进入到工程所在的目录,执行$qmake则会为所建的工程生成一个makefile文件;4)编译工程生成可执行程序:执行$make如果没有错误就会生成可执行文件;接下来就可以执行程序,程序的结果将在终端中输出。
2.用QT Designer开发GUI的C/C++软件1)建立工程:方法同上;2)制作程序界面:●File---〉New选择Dialog,则会建立一个空的对话框根据个人喜好在右边的Property Editor中修改对话框的名字以及相关属性;其中caption属性为窗体标题栏上的显示,name为所创建的对话框类的对象的名字;(本例中将他们都改为了mainForm,)●添加其他控件:一个TextLabel:拖入后双击输入Date;一个LineEdit:拖入后双击输入2006.12.10,并将其name改为dateLineEdit 添加两个按钮,分别将其name改为exitPushbutton, updatePushbutton●选择Tools菜单下的connect signal/slots,在Exit按钮上点击鼠标不放松,将其拖到对话框的任意位置后释放,此时会弹出signal 和slots的设置对话框在signal栏目类选择clicked()信号,在Slot栏目内选择close ()槽;这样链接起来的意思是在单击(clicked)Exit按钮时就触发了mainForm的close()函数,也就是说关闭程序;在单击Update按钮的时候我们希望能够更新LineEdit内的显示,使它能显示当天的日期;这样我们就要添加一个自定义的slot来实现这一功能;●给mainForm添加updateDateSlot。
如下图,选择Object Explore中的member标签,然后在slots的public下双击就出现了自定义slots的对话框。
Slot其实就是mainForm的一种特殊的成员函数。
输入函数名updateDateSlot()后确定。
则在project中将会添加一个mainForm.ui.h文件,其内容如下:/****************************************************************************** ui.h extension file, included from the uic-generated form implementation.**** If you wish to add, delete or rename functions or slots use ** Qt Designer which will update this file, preserving your code. Create an ** init() function in place of a constructor, and a destroy() function in** place of a destructor.*****************************************************************************/void mainForm::updateDateSlot(){}●3)自定义slot函数的实现,由于只是演示流程,所以制作简单处理如下:/****************************************************************************** ui.h extension file, included from the uic-generated form implementation.**** If you wish to add, delete or rename functions or slots use ** Qt Designer which will update this file, preserving your code. Create an ** init() function in place of a constructor, and a destroy() function in** place of a destructor.*****************************************************************************/void mainForm::updateDateSlot(){QString date = "There is no function to calculate the date,now!";this->dateLineEdit->setText(date);}这样在单击Update按钮时dateLineEdit中就会显示There is no function tocalculate the date,now!this->dateLineEdit->setText(date);语句中的dateLineEdit是我所添加的LineEdit类的对象名,setText()函数用于设置它的属性。
有关各控件类的属性及成员函数请参考help->content如图,选择:QT Class Reference ,然后单击All Classes链接查找自己所关注的类的属性和成员函数。
3.创建main.cpp:方法如下:file-〉new-〉C++ main-file(main.cpp),按照提示则会自动为所创建的mainForm进行关联并生成相关代码如下:#include <qapplication.h>#include "mainForm.h"int main( int argc, char ** argv ){QApplication a( argc, argv );mainForm w;w.show();a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );return a.exec();}(简单分析如下:mainForm w;定义了一个我们所实现的界面mainForm类对象w;w.show();则是显示该界面;可见QT比VC开发GUI程序要简单,在VC中没有main函数,所以初学者都不知道程序是从哪儿开始执行。
)4.生成makefile:方法同上5.编译生成可执行文件:方法同上6.至此一个UI程序编写完毕。
嵌入式学习流程1、Linux 基础安装Linux操作系统Linux文件系统Linux常用命令Linux启动过程详解熟悉Linux服务能够独立安装Linux操作系统能够熟练使用Linux系统的基本命令认识Linux系统的常用服务安装Linux操作系统Linux基本命令实践设置Linux环境变量定制Linux的服务Shell 编程基础使用vi编辑文件使用Emacs编辑文件使用其他编辑器2、Shell 编程基础Shell简介认识后台程序Bash编程熟悉Linux系统下的编辑环境熟悉Linux下的各种Shell 熟练进行shell编程熟悉vi基本操作熟悉Emacs的基本操作比较不同shell的区别编写一个测试服务器是否连通的shell脚本程序编写一个查看进程是否存在的shell脚本程序编写一个带有循环语句的shell脚本程序3、Linux 下的C 编程基础linux C语言环境概述Gcc使用方法Gdb调试技术Autoconf Automake Makefile 代码优化熟悉Linux系统下的开发环境熟悉Gcc编译器熟悉Makefile规则编写Hello,World程序使用make命令编译程序编写带有一个循环的程序调试一个有问题的程序4、嵌入式系统开发基础嵌入式系统概述交叉编译配置TFTP服务配置NFS服务下载Bootloader和内核嵌入式Linux应用软件开发流程熟悉嵌入式系统概念以及开发流程建立嵌入式系统开发环境制作cross_gcc工具链编译并下载U-boot 编译并下载Linux内核编译并下载Linux应用程序4、嵌入式系统移植Linux内核代码平台相关代码分析ARM平台介绍平台移植的关键技术移植Linux内核到ARM平台了解移植的概念能够移植Linux内核移植Linux2.6内核到ARM9开发板5、嵌入式Linux 下串口通信串行I/O的基本概念嵌入式Linux应用软件开发流程Linux系统的文件和设备与文件相关的系统调用配置超级终端和MiniCOM 能够熟悉进行串口通信熟悉文件I/O 编写串口通信程序编写多串口通信程序6、嵌入式系统中多进程程序设计Linux系统进程概述嵌入式系统的进程特点进程操作守护进程相关的系统调用了解Linux系统中进程的概念能够编写多进程程序编写多进程程序编写一个守护进程程序sleep系统调用任务管理、同步与通信Linux任务概述任务调度管道信号共享内存任务管理API 了解Linux系统任务管理机制熟悉进程间通信的几种方式熟悉嵌入式Linux中的任务间同步与通信编写一个简单的管道程序实现文件传输编写一个使用共享内存的程序7、嵌入式系统中多线程程序设计线程的基础知识多线程编程方法线程应用中的同步问题了解线程的概念能够编写简单的多线程程序编写一个多线程程序8、嵌入式Linux 网络编程网络基础知识嵌入式Linux中TCP/IP网络结构socket 编程常用API函数分析Ping命令的实现基本UDP套接口编程许可证管理PPP协议GPRS 了解嵌入式Linux网络体系结构能够进行嵌入式Linux环境下的socket 编程熟悉UDP协议、PPP协议熟悉GPRS 使用socket 编写代理服务器使用socket 编写路由器编写许可证服务器指出TCP和UDP的优缺点编写一个web服务器编写一个运行在ARM平台的网络播放器9、GUI 程序开发GUI基础嵌入式系统GUI类型编译QT 进行QT开发熟悉嵌入式系统常用的GUI 能够进行QT编程使用QT编写“Hello,World”程序调试一个加入信号/槽的实例通过重载QWidget 类方法处理事件10、Linux 字符设备驱动程序设备驱动程序基础知识Linux系统的模块字符设备驱动分析fs_operation结构加载驱动程序了解设备驱动程序的概念了解Linux字符设备驱动程序结构能够编写字符设备驱动程序编写Skull驱动编写键盘驱动编写I/O驱动分析一个看门狗驱动程序对比Linux2.6内核与2.4内核中字符设备驱动的不同Linux 块设备驱动程序块设备驱动程序工作原理典型的块设备驱动程序分析块设备的读写请求队列了解Linux块设备驱动程序结构能够编写简单的块设备驱动程序比较字符设备与块设备的异同编写MMC卡驱动程序分析一个文件系统对比Linux2.6内核与2.4内核中块设备驱动的不同11、文件系统虚拟文件系统文件系统的建立ramfs内存文件系统proc文件系统devfs 文件系统MTD 技术简介MTD块设备初始化MTD块设备的读写操作了解Linux系统的文件系统了解嵌入式Linux的文件系统了解MTD技术能够编写简单的文件系统为ARM9开发板添加MTD支持移植JFFS2文件系统通过proc文件系统修改操作系统参数分析romfs 文件系统源代码创建一个cramfs 文件系统。