我的代码中有什么错误?

Nar*_*uto -1 qt signals symbian nokia qt4

我有以下代码:

class myslot
    {

public:
    Q_OBJECT

    myslot()
        {

        }
    ~myslot()
        {

        }

    typedef enum  Emycars{volvo,benz,tata}cars;


public slots: 
void hellowslot(myslot::cars);
    };

void myslot::hellowslot(myslot::cars cars1)
    {

    }


class mysignal
    {
public:
    Q_OBJECT

public:
      mysignal(myslot *ourslot)
          {

     bool val = QObject::connect(this,SIGNAL(hellowsignal(myslot::Emycars)),ourslot,SLOT(hellowslot(myslot::Emycars)));
          }
      ~mysignal()
          {

          }

signals: 
void hellowsignal(myslot::Emycars);


    };

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    myslot slot;
    mysignal sig(&slot);


   // DeleteNow w;
   // w.showMaximized();
    return a.exec();
}
Run Code Online (Sandbox Code Playgroud)

我的代码中有什么错误?我是否为接收枚举权限的函数编写连接的方式是什么?

gre*_*eth 7

为了使用信号/槽机制,类必须继承QObject(直接或从类似的子QObjectQWidget)继承,使用Q_OBJECT宏声明自己.

所以,你mysignalmyslot必须继承QObject.

此外,您必须将宏放在类的左大括号之后,这应该给出:

class myslot : public QObject
{
    Q_OBJECT
public:
// .../... 
};

class mysignal : public QObject
{
    Q_OBJECT
public:
// .../... 
};
Run Code Online (Sandbox Code Playgroud)