Qt connect "no such slot" when slot definitely does exist

Richard1403832 picture Richard1403832 · May 18, 2012 · Viewed 40k times · Source

Qt v4.8.0, VC2010 compiler

I have a QMainWindow based class and I'm trying to send it signals involving QUuid

However, every time I run it I get the errors:

Object::connect: No such slot MainWindow::on_comp_connected(QUuid) in ..\..\src\mainwindow.cpp:143
Object::connect:  (receiver name: 'MainWindow')

It's driving me potty as the slot definitely does exist (it's in the moc_)

class MainWindow : public QMainWindow
{
Q_OBJECT

// SNIP private typedefs

public:
    MainWindow(QWidget *parent = 0, Qt::WFlags flags = 0);
    ~MainWindow();
// SNIP public methods

signals:
   void testSendQuuid(const QUuid &qcid);

public slots:
   void on_comp_connected(const QUuid &qcid);

private:
// SNIP private parts

QOpenAcnController *acnInt;  // This is where the signal comes from

};

At the end of the MainWindow constructor (the line 143 mentioned) I have:

connect(acnInt, SIGNAL(callback_comp_connected(QUuid)),
        this, SLOT(on_comp_connected(QUuid)));

Given that the slot is definitely there in the moc_mainwindow.cpp (I checked, it's slot #1), what on earth could be stopping the connection happening?

If I try to connect the testSendQuuid(QUuid) signal to the slot, I get no such signal and no such slot as well.

I cannot for the life of me figure out why Qt is denying the existence of a slot that is most definitely there!

Answer

FONQRI picture FONQRI · Oct 12, 2016

I solved problem by adding Q_OBJECT macro in mainwindow class.