第9章 嵌入式Linux用户图形界面编程.ppt

第9章 嵌入式Linux用户图形界面编程 9.1 Linux图形开发基础 GUI的一般架构 嵌入式GUI底层支持库 嵌入式GUI高级函数库 9.2 嵌入式Linux图形用户界面简介 Microwindows/Nano-X MiniGUI OpenGUI 9.3Qt/Embedded嵌入式图形开发基础 Qt/Embedded概述 创建Qt/Embedded开发环境 Qt/Embedded的使用 9.4 综合训练之Hello程序 发布Qt/Embedded程序到目标板 (1)基本部件。 一个窗口部件可包含任意数量的子部件。子部件在父部件的区域内显示。没有父部件的部件是顶级部件(比如一个窗口),Qt不在窗口部件上施加任何限制。任何部件都可以是顶级部件;任何部件都可以是其他部件的子部件。通过使用布局管理器可以自动设定子部件在父部件区域中的位置,如果喜欢也可以手动设定。如果父部件被停用、隐藏或删除后,同样的动作会递归地应用于它的所有子部件。 标签、消息框、工具提示等并不局限于使用同一种颜色、字体和语言。通过使用HTML的一个子集,Qt的文本渲染部件能够显示多语言宽文本,下面是一个实例代码: #include qapplication.h #include qlabel.h int main( int argc, char **argv ) { QApplication app( argc, argv ); QLabel *hello = new QLabel( font color=blueHello iQt/Embedded!/i/font, 0 ); app.setMainWidget( hello ); hello-show(); return app.exec(); } 这是我们接触到的第一个Qt程序,为了使大家便于理解,对程序的代码一行一行地解说。 #include qapplication.h 这一行引用了包含QApplication类定义的头文件。在每一个使用Qt的应用程序中都必须使用一个QApplication对象。QApplication管理了各种各样的应用程序的广泛资源,比如默认的字体和光标,等等。 #include qlabel.h 引用了包含QLabel类定义的头文件,因为本例使用了QLabel对象。QLabel可以像其他QWidget一样管理自己的外形。一个窗口部件就是一个可以处理用户输入和绘制图形的用户界面对象。程序员可以改变它的全部外形和其他属性,以及这个窗口部件的内容。 int main( int argc, char **argv ) main()函数是程序的入口。在使用Qt的所有情况下,main()只需要在把控制转交给Qt库之前执行一些初始化,然后Qt库通过事件来向程序告知用户的行为。 argc是命令行变量的数量,argv是命令行变量的数组,这是一个C/C++特征。 QApplication app( argc, argv ); app是这个程序的Qapplication,它在这里被创建并且处理命令行变量。所有被Qt识别的命令行参数都会从argv中被移除,并且argc也因此而减少。在任何Qt的窗口系统部件被使用之前必须创建QApplication对象。 QLabel *hello = new QLabel( font color=blueHello iQt/Embedded!/i/font, 0 ); 这里是在QApplication之后接着的是第一个窗口系统代码,创建了一个标签。这个标签被设置成显示“Hello Qt/Embedded!”并且字体颜色为蓝色,“Qt/Embedded!”为斜体。因为构造函数指定0为它的父窗口,所以它自己构成了一个窗口。 app.setMainWidget( hello ); 这个按钮被选为这个应用程序的主窗口部件。如果用户关闭了主窗口部件,应用程序就退出了。设置主窗口部件并不是必须的步骤,但绝大多数程序都会这样做。 hello.show(); 当创建一个窗口部件的时候,它是不可见的。必须调用show()来使它变为可见的。 return app.exec(); 这里就是main()把控制转交给Qt,并且当应用程序退出的时候exec()就会返回。在exec()中,Qt接受并处理用户和系统的事件并且把它们传递给适当的窗口部件。 (2)画布。 QCanvas类提供一个2D图形的高级接口。它能够处理大量的画布项目来描述直线、矩形、椭圆、文本、位图,以及动画等。画布项目很容易做成交互式界面,例如,支持用户移动等。 画布项目是QCanvasItem子类的实例。它们比窗口部件轻巧得多,能很快地移

文档评论(0)

1亿VIP精品文档

相关文档