当前位置:文档之家› 第10章 Linux编程—图形界面设计

第10章 Linux编程—图形界面设计

#43;成员函数,可以被正常调 用,它们唯一的特殊性就是很多信号可以 与其相关联。当与其关联的信号被发射 时,这个槽就会被调用。槽可以有参数, 但槽的参数不能有缺省值。
槽函数也分为三种类型,即public slots、private slots和 protected slots。 • public slots:在这个区内声明的槽意味着任何对象都可将 信号与之相连接。这对于组件编程非常有用,你可以创建 彼此互不了解的对象,将它们的信号与槽进行连接以便信 息能够正确的传递。 • protected slots:在这个区内声明的槽意味着当前类及其 子类可以将信号与之相连接。这适用于那些槽,它们是类 实现的一部分,但是其界面接口却面向外部。 • private slots:在这个区内声明的槽意味着只有类自己可 以将信号与之相连接。这适用于联系非常紧密的类。
• 在QT中信号和槽取代了这些凌乱的函数指 针,使得我们编写这些通信程序更为简洁 明了。 信号和槽能携带任意数量和任意类 型的参数,他们是类型完全安全的,不会 像回调函数那样产生core dumps。
信号
• 当某个信号对其客户或所有者发生的内部状态发 生改变,信号被一个对象发射。只有定义过这个 信号的类及其派生类能够发射这个信号。当一个 信号被发射时,与其相关联的槽将被立刻执行, 就象一个正常的函数调用一样。 • 信号-槽机制完全独立于任何GUI事件循环。只有 当所有的槽返回以后发射函数(emit)才返回。 如果存在多个槽与某个信号相关联,那么,当这 个信号被发射时,这些槽将会一个接一个地执 行,但是它们执行的顺序将会是随机的
QT Designer
新建工程
• 选择File>New菜单项,选择C++ Project, 创建新的工程,
绘制窗体
控件 LineEdit ComboBox ComboBox LineEdit SpinBox PushButton PushButton PushButton
Name leEnterNumber cbConvertFrom cbConvertTo leResult sbDecimals pbClear pbCalculate pbQuit
QT Designer
• Qt设计器是用来设计和实现用户界面并能 够在多平台下使用的一种工具。Qt设计器 可以使用户界面设计实验变得简单。在任 何时候你可以要求所生成的代码去重建Qt 设计器产生的用户界面文件,并可以根据 你的喜好来改变你的设计。
qmake
• qmake是Trolltech公司创建的用来为不同的 平台和编译器书写Makefile的工具。手写 Makefile是比较困难并且容易出错的,尤其 是需要给不同的平台和编译器组合写几个 Makefile。使用qmake,开发者创建一个简 单的“项目”文件并且运行qmake生成适当的 Makefile。
QT信号与Slot机制
• 信号和槽机制是QT的核心机制,要精通QT编程 就必须对信号和槽有所了解。信号和槽是一种高 级接口,应用于对象之间的通信,它是QT的核心 特性,也是QT区别于其它工具包的重要地方。信 号和槽是QT自行定义的一种通信机制,它独立于 标准的C/C++语言,因此要正确的处理信号和 槽,必须借助一个称为moc(Meta Object Compiler)的QT工具,该工具是一个C++预处理 程序,它为高层次的事件处理自动生成所需要的 附加代码。
下面定义了三个信号:
signals: void mySignal(); void mySignal(int x); void mySignalParam(int x,int y);
• 在上面的定义中,signals是QT的关键字,而非 C/C++的。接下来的一行void mySignal() 定义了 信号mySignal,这个信号没有携带参数;接下来 的一行void mySignal(int x)定义 了重名信号 mySignal,但是它携带一个整形参数,这有点类 似于C++中的虚函数。 • 从形式上 讲信号的声明与普通的C++函数是一样 的,但是信号却没有函数体定义,另外,信号的 返回 类型都是void,不要指望能从信号返回什么 有用信息。信号由moc自动产生,它们不应该 在.cpp文件中实现。
Qt具有下列优点:
• 优良的跨平台特性: • Qt支持下列操作系统: Microsoft Windows 95/98, Microsoft Windows NT, Linux, Solaris, SunOS, HPUX, Digital UNIX (OSF/1, Tru64), Irix, FreeBSD, BSD/OS, SCO, AIX, OS390,QNX 等等。
• X窗口是一种用于UNIX系统的标准图形化 用户界面(GUI),它是由麻省理工学院开发 的。GUI是用鼠标器和键盘控制的,具有下 拉菜单、在屏按钮、卷动条和为运行不同 应用的重叠窗口界面。 • X窗口系统在位映射屏幕上的一个或多个窗 口中运行程序。用户可以在每个窗口同时 在系统上运行多个程序,并且通过用鼠标 器点击它们来在窗口之间进行交换。
Linux操作系统
• 大工软件学院嵌入式系 邱铁
办公楼409 Tel:87571521 E_mail: qiutie@
第10章
Linux图形界面设计
工程实践的目的与任务
• • 了解Linux X Windows,及QT信号机制。 熟悉QT编程,实现如图1所示单位转换工 具并可以熟练利用QT Designer设计图形 界面应用程序。
说明 输入待转换数字文本框 源转换单位 目标转换单位 转换结果 转换结果的小数位数 清楚 开始转换 退出
向组合框(Combo Box)添加选项
• 右击cbConvertFrom和cbConvertTo,选择 Edit,如图11.7所示。添加要转换的单位。 对cbConvertFrom添加KiloMeters、 Meters、CentiMeters、MilliMeters,对 cbConvertTo添加Miles、Yards、Feet、 Inches。
下面声明了三个槽
public slots: void mySlot(); void mySlot(int x); void mySignalParam(int x,int y);
信号与槽的关联
• 通过调用QObject对象的connect函数来将某个对象的信号 与另外一个对象的槽函数相关联,这样当发射者发射信号 时,接收者的槽函数将被调用。该函数的定义如下:
• X服务器处理所有X客户的处理程序,以及 通过消息传递系统和其它客户交互工作。X 服务器控制整个本地环境,因而当访问存 储器和其它系统资源时,程序间进行合 作。
QT编程
• Qt是一个跨平台的C++ 图形用户界面库, 由挪威TrollTech公司出品,目前包括Qt, 基于Framebuffer的Qt Embedded,快速开 发工具Qt Designer,国际化工具Qt Linguist等部分Qt支持所有Unix系统,当然 也包括Linux,还支持 WinNT/Win2k, Win95/98 平台。Trolltech 公司在1994 年 成立,但是在1992年,成立Trolltech公司 的那批程序员就已经开始设计Qt 了,Qt的 第一个商业版本于1995年推出
• 面向对象 • Qt 的良好封装机制使得 Qt 的模块化程 度非常高,可重用性较好,对于用户开发 来说是非常 方便的。 Qt 提供了一种称为 signals/slots 的安全类型来替代 callback, 这使得各个元件 之间的协同工作变得十分 简单。
• 丰富的 API • Qt 包括多达 250 个以上的 C++ 类,还 替供基于模板的 collections, serialization, file, I/O device, directory management, date/time 类。甚至还包括 正则表达式的处理 功能。
bool QObject::connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * member ) [static]
创建工程目录打开QT Designer
#su #mkdir convertor #cd convertor #designer &
编写代码
• 添加槽处理函数
• 添加信号-槽的映射:
• 编辑Convert函数
• 为项目添加主cpp文件
生成Makefile
• 在终端中使用qmake命令生成Makefile文 件。
编译运行
• 在终端中,运行make命令编译程序,程序 编译后,可以发现在项目目录中多了一个 可执行文件convertor。
结果
• 在终端中运行./convertor命令,启动程序。
相关主题