Important: Please read the Qt Code of Conduct -

Moc not invoked

  • Hi

    If I declare a class in a cpp file -
    #include <QObject>

    class NewTest : public QObject

    private slots:
    void s1();

    void NewTest::s1()


    #include "NewTest.moc"

    The moc compiler is not invoked
    However, if I declare a constructor for NewTest it is

    Can anyone explain why this is?

    I am writing some unit tests and do not need the constructor.

    Once the moc has been invoked I can remove the constructor and then everything works as expected


  • Hi,

    Qt Objects needs a constructor where you declare a parent object;

    Anyway I suggest to follow the rules:

    [C++] Declare classes in .H files

    [Qt] If you inherits from QObject and want use Q_OBJECT macro, declare at least a constructor that accept a QObject*

    If you're writing QTestLib unit tests, your code is correct but you missed to insert

    before include moc file

Log in to reply