8

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了多年,以前从未见过这个,它一定是愚蠢的,但我看不出是什么导致了问题。

4

1 回答 1

8

类定义中的“槽”和“信号”部分应该只包含函数;既不是类型也不是成员变量。

您应该将其移动到typedef公共、受保护或私有部分:

class Sy_timeLineDelegateScene : public QGraphicsScene
{
    Q_OBJECT
public:
    Sy_timeLineDelegateScene( Sy_animPropertyTimeLine* timeline,
                              Sy_animClock* clock,
                              QObject* parent = nullptr );
    virtual ~Sy_timeLineDelegateScene() {}

    typedef QMap< Sy::Frame, Sy_timeLineDelegateKey* > DelegateTimeLine;

protected slots:
...
于 2012-05-31T21:42:41.083 回答