网络安全参考 | 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   字体: [ ]  
 

  5. 构造函数不能用在signals或者slots声明区域内。

  的确,将一个构造函数放在signals或者slots区内有点不可理解,无论如何,不能将它们放在private slots、protected slots或者public slots区内。下面的用法是不合语法要求的:

class SomeClass : public QObject
{
 Q_OBJECT
public slots:
 SomeClass( QObject *parent, const char *name ) : QObject( parent, name ) {}  // 在槽声明区内声明构造函数不合语法
    [...]
};

  6. 函数指针不能作为信号或槽的参数。

  例如,下面的例子中将void (*applyFunction)(QList*, void*)作为参数是不合语法的:

class someClass : public QObject
{
 Q_OBJECT
  [...]
public slots:
 void apply(void (*applyFunction)(QList*, void*), char*); // 不合语法
};

  你可以采用下面的方法绕过这个限制:

typedef void (*ApplyFunctionType)(QList*, void*);
class someClass : public QObject
{
 Q_OBJECT
  [...]
public slots:
 void apply( ApplyFunctionType, char *);
};

  7.信号与槽不能有缺省参数。

  既然signal->slot绑定是发生在运行时刻,那么,从概念上讲使用缺省参数是困难的。下面的用法是不合理的:

class SomeClass : public QObject
{
 Q_OBJECT
public slots:
 void someSlot(int x=100); // 将x的缺省值定义成100,在槽函数声明中使用是错误的
};

  8.信号与槽也不能携带模板类参数。

  如果将信号、槽声明为模板类参数的话,即使moc工具不报告错误,也不可能得到预期的结果。 例如,下面的例子中当信号发射时,槽函数不会被正确调用:

[...]
   public slots:
       void MyWidget::setLocation (pair<int,int> location);
    [...]
   public signals:
       void MyObject::moved (pair<int,int> location);

 
推荐文章
·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 织梦内容管理系统