snifer

【嵌入式】[原创]嵌入式QT编程的几个小技巧

0
阅读(3643)

炎炎夏日,大家的激情不减啊,嵌入式竞赛搞得如火如荼啊。

做嵌入式系统的童鞋都需要用到QT,这个可视化的编程工具确实非常强悍,今天我就写写这方面的内容,通过几个小技巧让大家更喜欢这个工具。

1、Qt信号和插槽通信


Signal和Slot是Qt中一种用于对象间通信的调用机制,不同于传统的函数回调方式。信号和插槽是Qt中非常有特色的地方,可以说是Qt编程区别于其它编程的标志。

信号和插槽不是标准C++功能,需要特殊的语句才能创建信号和插槽,但是C++编译器不能理解这些语句。必须经过特殊的工具对象编辑器MOC(Meta Object Compiler)将源代码中创建信号和插槽的语句翻译成C++编译器能够理解的代码。

步骤:


(1)进入/sbc2410/x86-qtopia目录,运行set-env脚本,设置环境变量,然后创建文件夹signalslot。

$ cd /sbc2410/x86-qtopia

$ mkdir signalslot

(2)进入signalslot目录,建立文件signalslot.cpp,并编写程序,然后用progen命令生成工程文件signalslot.pro。

$ cd signalslot

$ vi signalslot.cpp

$ progen –t app.t –o signalslot.pro


(3)使用tmake工具,生成signalslot工程的Makefile文件,并按照6.1小节进行修改,然后编译,得到可执行文件signalslot。

$ tmake –o Makefile signalslot.pro

(4)启动虚拟控制台,运行signalslot程序,点击“Quit”按钮,程序将退出。

$ ./signalslot -qws


信号和插槽实验结果

2、按钮

一个友好的图形界面,一般都会有对话框,用于人机交互。Qt中有很多类型的对话框,如颜色对话框、字体对话框、文件对话框、输入对话框和消息对话框等。不同对话框都有一系列的API函数,调用这些函数必须包含头文件qdialog.h。


(1)进入/sbc2410/x86-qtopia目录,运行set-env脚本,设置环境变量,然后创建文件夹dialog.。

$ cd /sbc2410/x86-qtopia

$ mkdir dialog

(2)进入dialog目录,建立文件userdialog.h和userdialog.cpp,并编写程序,然后用progen工具生成工程文件userdialog.pro。

$ cd dialog

$ vi userdialog.h

$ vi userdialog.cpp

$ progen –t app.t –o userdialog.pro

(3)使用tmake工具生成userdialog工程的Makefile文件,并进行修改,编译生成可执行文件userdialog。

$ tmake –o Makefile userdialog.pro

$ make

(4)启动虚拟控制台,运行userdialog程序,点击POPUP按钮,将会弹出一个新的对话框,点击对话框的POPDOWN按钮,新对话框将关闭。

$ ./userdialog -qws



对话框实验结果

3、Qt布局

一个用户图形界面,布局也是至关重要,合理的布局能增加界面的美感,亦能够提高软件的易用性。图形界面编程,一般包括基本组件、组件的布局以及组件的回调。Qt中有很多种布局,最基本的就是QLayout(包括QBoxLayout:QHBoxLayout,QVBoxLayout)和QGridLayout。使用了布局相关API函数的应用程序,需要包含头文件qlayout.h。

步骤:

(1)进入/sbc2410/x86-qtopia目录,运行set-env脚本,设置环境变量,然后创建文件夹layout。

$ cd /sbc2410/x86-qtopia

$ . set-env

$ mkdir layout

(2)进入layout目录,建立文件layout.cpp,并编写程序,然后用progen工具生成工程文件layout.pro。

$ cd layout

$ vi layout.cpp

$ progen –t app.t –o layout.pro

(3)使用tmake工具,生成layout工程的Makefile文件,并进行修改,编译,得到可执行文件layout。

$ tmake –o Makefile layout.pro

(4)启动虚拟控制台,运行layout程序。

$ ./layout -qws

Qt布局实验结果

今天就写这么多吧,爱上嵌入式的孩纸们,善用、巧用、多用QT吧,会让你的系统变得有生命有活力!

如果对你有帮助,就给我投票吧,谢谢啦!







Baidu
map