[日期:2009-03-02] | 来源:Linux社区 作者:QT编辑 |
一、信号和槽
Qt的一项重要的机制就是它的信号和槽,在图形用户界面编程中,经常需要将一个窗口部件的变化通知给另一个窗口部件,或者说系统对象进行通信.一般的图形用户编程中采用回调函数进行对象间通信(如:gtk+),这样回调函数和处理函数捆绑在一起,但这样做没有信号和槽机制简便和灵活.
如Qt的窗口部件有多个预定义的信号,槽是一个可以被调用处理特定信号的函数.Qt的窗口部件有多个预定义的槽,当一个特定的时候发生的时候,一个信号被发射,对信号感兴趣的槽就会调用对应响应函数.
信号/槽机制在QObject类中实现,从QObject类或其一个子类继承的所有类可以包含信号和槽.当对象改变其状态的时候,信号被发送,对象不关心有没有其他对象接收到这信号.槽是类的正常成员函数,可以将信号和槽通过connect函数任意相连.当一个信号被发射,它所连接的槽会被立即执行,如同一个普通函数调用一样.
槽是普通成员函数,它和普通成员函数一样分为public、protected和private共3类。Public
二、
下面我们用一个实例来了解信号的用法.
首先我们新建一个文件夹:
#mkdir
我们打开Qt创建项目,项目路径为
从菜单栏的
这时侯,你的
然后我们从左面的Toolbox拖拽一个PushButton.并把name改为ExitButton,把text改为Exit.
下面是效果图:
到这里我们已经把页面设置完了,下面我们为ExitButton设置信号函数.
这时侯我们就看到了View
我们就算是基本完成了。保存下。
我们现在还不能编译这个程序,为什么呢?对了因为我们还缺少一个main.cpp。想一想上一章怎样创建的了。从菜单栏的File->New打开新建对话框,选择最后一个:C++
好了,现在来编译我们的程序。
先打开一个终端,然后切换到我们建立工程的目录。然后利用Qt的工具生成Makefile文件。#
编译:#
运行:#
点击Exit按扭,程序退出。
三、在Qt
下面我们要做一个加法器。打开Qt,新建名为slot的工程文件,然后再新建如下图所示的界面:
修改要显示结果的label的name为textLableresult.并把其text清空.把确定按扭的name改为AddButton.
好了,我们已经把页面设置好了.我们现在要做的就只有使用户按AddButton按扭时textLableresult能够显示lineEdit1和lineEdit2的和.所以我们必须对AddButton的clock信号设置一个槽.
首先按一下
点击右边的“Edit
这时我们已经建立了一个槽,我们再回到
我们还需要向add()槽里写一些代码,使它能够完成加法功能.在主窗体"form_main"的空白处双击鼠标左键,弹出对话框"Creating
我们需要在
void { } |
到这里我们编辑的工作就都结束了,我们先保存。然后打开一个终端,改变当前目录为我们保存项目的目录,然后
生成Makefile文件:#qmake
编译:#
运行:#
下面是我运行的界面: