网络安全参考 | UNIX参考 | GPS参考 | 无线参考 | 在线手册 | OSBUG.ORG | SUNNY-NETWORK.COM
天线制作 GPS 地标
网站地图 RSS订阅
高级搜索 收藏本站
Home | 业界动态 | Open source | GNU | Linux | BSD | Solaris | AIX | HP-UX | IRIX | Mac OS X | Minix | Tru64 | SCO UNIX | Network | Security | X-Window | Database | 应用服务 | Programming | 经典著作 | 永远的纪念 | 杂项
 当前位置: Home > Programming > QT > 文章  
QT的信号与槽机制介绍
文章来源: IBM Developerworks 文章作者: 唐新华 发布时间: 2001-06-01   字体: [ ]  
 

  • protected slots:在这个区内声明的槽意味着当前类及其子类可以将信号与之相连接。这适用于那些槽,它们是类实现的一部分,但是其界面接口却面向外部。
  • private slots:在这个区内声明的槽意味着只有类自己可以将信号与之相连接。这适用于联系非常紧密的类。

  槽也能够声明为虚函数,这也是非常有用的。

  槽的声明也是在头文件中进行的。例如,下面声明了三个槽:

public slots:
  void mySlot();
  void mySlot(int x);
  void mySignalParam(int x,int y);

  信号与槽的关联

  通过调用QObject对象的connect函数来将某个对象的信号与另外一个对象的槽函数相关联,这样当发射者发射信号时,接收者的槽函数将被调用。该函数的定义如下:

bool QObject::connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * member ) [static]

  这个函数的作用就是将发射者sender对象中的信号signal与接收者receiver中的member槽函数联系起来。当指定信号signal时必须使用QT的宏SIGNAL(),当指定槽函数时必须使用宏SLOT()。如果发射者与接收者属于同一个对象的话,那么在connect调用中接收者参数可以省略。

  例如,下面定义了两个对象:标签对象label和滚动条对象scroll,并将valueChanged()信号与标签对象的setNum()相关联,另外信号还携带了一个整形参数,这样标签总是显示滚动条所处位置的值。

QLabel     *label  = new QLabel;
QScrollBar *scroll = new QScrollBar;
QObject::connect( scroll, SIGNAL(valueChanged(int)), label, SLOT(setNum(int)));

  一个信号甚至能够与另一个信号相关联,看下面的例子:

class MyWidget : public QWidget
{
public:
  MyWidget();
    ...
signals:
  void aSignal();
    ...
private:
  ...
  QPushButton *aButton;
};
 
MyWidget::MyWidget()
{
  aButton = new QPushButton( this );
  connect( aButton, SIGNAL(clicked()), SIGNAL(aSignal()) );
}

  在上面的构造函数中,MyWidget创建了一个私有的按钮aButton,按钮的单击事件产生的信号clicked()与另外一个信号aSignal()进行了关联。这样一来,当信号clicked()被发射时,信号aSignal()也接着被发射。当然,你也可以直接将单击事件与某个私有的槽函数相关联,然后在槽中发射aSignal()信号,这样的话似乎有点多余。

  当信号与槽没有必要继续保持关联时,我们可以使用disconnect函数来断开连接。其定义如下:

 
推荐文章
·Qt 的内部进程通信机制
·Qt中的多线程编程
 

 
↑返回顶部   打印本页   关闭窗口↓  

Google
 
Web oldhand.org unixreference.net meshmea.org
相关分类
热点文章
·Qt中的多线程编程
·Qt 的内部进程通信机制
相关文章
·Qt 的内部进程通信机制
·Qt中的多线程编程
·GCC创建共享库
·致初学者:PHP比ASP优秀
·Linux如何处理当前运行
·Linux操作系统套接字编
·幕启:介绍 Z shell
·巧用AWK处理二进制数据
更多...
 
 

Copyright(c) 2001-2009 OLDHAND ORGANIZATION, All Rights reserved.
Power by DedeCms 织梦内容管理系统