Question

I have a build error with a slot in Qt. I have an class which has a public slot:

void doSomething();

In constructor of this class i do:

this->connect( ui->textFrom, SIGNAL(returnPressed()),
               this, SLOT(doSomething()) );

I have QLineEdit - textFrom object. The build error is

../moc_mainwindow.cpp:66: undefined reference to `MainWindow::doSomething()'

:-1: error: collect2: ld returned 1 exit status

Help me, please (:

Was it helpful?

Solution

void doSomething(); looks like a snip from the header file, did you implement the slot itself?

OTHER TIPS

quick note about syntax: Usually you would use either

connect(from, SIGNAL(sig()), to, SLOT(slot()));

which is basically equivalent to

QObject::connect(from, SIGNAL(sig()), to, SLOT(slot()));

Which you'll do if you're calling from somewhere not inside a QObject.
While this syntax:

to->connect(from, SIGNAL(sig()), SLOT(slot()));

is also reasonable. But this syntax:

to->connect(from, SIGNAL(sig()), to, SLOT(slot()));

is just confusing and duplicates code.

I was getting same error in a Qt build.

I was adding a slot for the signal finished from Qprocess - the doco on which says:

void QProcess::finished(int exitCode, QProcess::ExitStatus exitStatus)

My code:

freesound.h

void slotPreviewFinished(int exitCode, QProcess::ExitStatus exitStatus);

freensound.cpp

 m_previewProcess = new(Qprocess);
 connect (m_previewProcess ,SIGNAL (finished(int , QProcess::ExitStatus )),this,SLOT(slotPreviewFinished(int , QProcess::ExitStatus)));

 void slotPreviewFinished(int exitCode, QProcess::ExitStatus exitStatus)
{
     qDebug()<<"// slotPreviewFinished: "<<exitCode;
}

compiling the above generated: /home/ttguy/kdenlive/kdenlive_git/build-kdenlive-Desktop-Default/src/moc_freesound.cpp:121: error: undefined reference to `FreeSound::slotPreviewFinished(int, QProcess::ExitStatus)'

And the fix was to prefix my implementation of slotPreviewFinished with FreeSound::

void FreeSound::slotPreviewFinished(int exitCode, QProcess::ExitStatus exitStatus)
{
     qDebug()<<"// slotPreviewFinished: "<<exitCode;
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top