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
多年了,之前从未见过它,它一定是愚蠢的东西,但我看不出是什么导致了这个问题。
答案 0 :(得分:7)
&#34;插槽&#34;和&#34;信号&#34;类定义中的节应该只包含函数;既不是类型也不是成员变量。
您应该将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:
...