| 
		    
                    
   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);  
		    
                       
		      
		      
		   |