但是,你可以使用typedef语句来绕过这个限制。如下所示:
typedef pair<int,int> IntPair; [...] public slots: void MyWidget::setLocation (IntPair location); [...] public signals: void MyObject::moved (IntPair location);
这样使用的话,你就可以得到正确的结果。
9.嵌套的类不能位于信号或槽区域内,也不能有信号或者槽。
例如,下面的例子中,在class B中声明槽b()是不合语法的,在信号区内声明槽b()也是不合语法的。
class A { Q_OBJECT public: class B { public slots: // 在嵌套类中声明槽不合语法 void b(); [....] }; signals: class B { // 在信号区内声明嵌套类不合语法 void b(); [....] }: };
10.友元声明不能位于信号或者槽声明区内。
相反,它们应该在普通C++的private、protected或者public区内进行声明。下面的例子是不合语法规范的:
class someClass : public QObject { Q_OBJECT [...] signals: //信号定义区 friend class ClassTemplate; // 此处定义不合语法 };
参考资料
QT KDevelop
关于作者
唐新华 软件工程师。Email: xhsmart@263.net
(参考链接: http://www-128.ibm.com/developerworks/cn/linux/guitoolkit/qt/signal-slot/index.html)
|