【发布时间】:2012-05-31 21:14:23
【问题描述】:
g++ 使用以下代码报告解析错误:
class Sy_timeLineDelegateScene : public QGraphicsScene
{
Q_OBJECT
public:
Sy_timeLineDelegateScene( Sy_animPropertyTimeLine* timeline,
Sy_animClock* clock,
QObject* parent = nullptr );
virtual ~Sy_timeLineDelegateScene() {}
protected slots: // Parse error at ":"
typedef QMap< Sy::Frame, Sy_timeLineDelegateKey* > DelegateTimeLine;
...
我的类派生自QObject,并且我在错误之前声明了Q_OBJECT 宏,但是如果我注释掉slots 部分,它编译得很好。我已经使用Qt 多年了,以前从未见过这种情况,这一定是愚蠢的,但我看不出是什么导致了问题。
【问题讨论】:
-
不就是
protected:没有slots吗? -
你在g++之前有没有通过moc传代码?
-
“slots”和“signals”部分应该只包含函数;既不是类型也不是成员变量。
-
@juergend,这是 QT 的事情。 “MOC”(元对象编译器)是一种处理这些东西的预处理器。
-
@leemes 就是这样!谢谢,我一定是在文档中错过了这一点……把它写在答案中,我会接受的。
标签: c++ qt g++ signals-slots